dante-editor 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -0
- data/ROADMAP.md +1 -1
- data/TODO.md +1 -0
- data/app/assets/javascripts/dante/dante.js.coffee.erb +1 -0
- data/app/assets/javascripts/dante/editor.js.coffee +50 -57
- data/app/assets/javascripts/dante/menu.js.coffee +11 -11
- data/app/assets/javascripts/dante/popover.js.coffee +76 -0
- data/app/assets/javascripts/dante.js +1 -0
- data/app/assets/stylesheets/dante/_caption.scss +52 -0
- data/app/assets/stylesheets/dante/_graf.scss +101 -29
- data/app/assets/stylesheets/dante/_media.scss +39 -0
- data/app/assets/stylesheets/dante/_needsorder.scss +92 -90
- data/app/assets/stylesheets/dante/_popover.scss +134 -0
- data/app/assets/stylesheets/dante/_post.scss +43 -2
- data/app/assets/stylesheets/dante/_scaffold.scss +1 -0
- data/app/assets/stylesheets/dante/_variables.scss +3 -1
- data/app/assets/stylesheets/dante.css.scss +3 -0
- data/lib/dante-editor/version.rb +1 -1
- data/source/assets/images/dante-editor-logo.png +0 -0
- data/source/assets/stylesheets/_scaffold.scss +1 -5
- data/source/assets/stylesheets/_tooltips.scss +2 -2
- data/source/assets/stylesheets/all.css.scss +39 -36
- data/source/index.html.erb +7 -8
- data/source/layouts/layout.erb +6 -5
- metadata +7 -8
- data/app/assets/stylesheets/temp/fonts.css.scss +0 -80
- data/app/assets/stylesheets/temp/medium.css +0 -12404
- data/app/assets/stylesheets/temp/review.scss +0 -21
- data/app/assets/stylesheets/temp/structure.haml +0 -22
- data/source/assets/images/dante-logo.png +0 -0
- data/source/assets/images/icon-logo.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5df180cc7b05573d27375f1d68407eae113faafa
|
4
|
+
data.tar.gz: 0c20ba63a6873253fe41dee4b53ddbde40668793
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7027a936bf5598765a5dc0f23ca29b9e8f024cb659f19efcfdb31c64418d3bbce8cb2545c167f7ac276f4ca77b84bda88e318bd3dd5c3a947a6a0b6ba4c90e3d
|
7
|
+
data.tar.gz: 6c4b90531e4971941b527324bf7b339d100aaf50a472c6827bbe0ea37272d8e4185fa196aa361d3c69220d51a1a004307227150717e375986806ba4fef05db1d
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/ROADMAP.md
CHANGED
data/TODO.md
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
|
2
|
-
selected_menu = false
|
3
2
|
utils = Dante.utils
|
4
3
|
|
5
4
|
class Dante.Editor extends Dante.View
|
6
5
|
|
7
6
|
events:
|
8
|
-
#"blur" : "handleBlur"
|
9
7
|
"mouseup" : "handleMouseUp"
|
10
8
|
"keydown" : "handleKeyDown"
|
11
9
|
"keyup" : "handleKeyUp"
|
@@ -15,6 +13,10 @@ class Dante.Editor extends Dante.View
|
|
15
13
|
"drop" : "handleDrag"
|
16
14
|
"click .graf--figure .aspectRatioPlaceholder" : "handleGrafFigureSelectImg"
|
17
15
|
"click .graf--figure figcaption" : "handleGrafFigureSelectCaption"
|
16
|
+
"keyup .graf--figure figcaption" : "handleGrafCaptionTyping"
|
17
|
+
|
18
|
+
"mouseover .markup--anchor" : "displayPopOver"
|
19
|
+
"mouseout .markup--anchor" : "hidePopOver"
|
18
20
|
|
19
21
|
initialize: (opts = {})=>
|
20
22
|
@editor_options = opts
|
@@ -81,7 +83,7 @@ class Dante.Editor extends Dante.View
|
|
81
83
|
</div>
|
82
84
|
|
83
85
|
<div class='section-content'>
|
84
|
-
<div class='section-inner'>
|
86
|
+
<div class='section-inner layoutSingleColumn'>
|
85
87
|
#{if @disable_title then '' else @renderTitle()}
|
86
88
|
<p class='graf graf--p'>#{@body_placeholder}<p>
|
87
89
|
</div>
|
@@ -97,6 +99,8 @@ class Dante.Editor extends Dante.View
|
|
97
99
|
$("<div class='inlineTooltip'></div>").insertAfter(@el)
|
98
100
|
@editor_menu = new Dante.Editor.Menu(editor: @)
|
99
101
|
@tooltip_view = new Dante.Editor.Tooltip(editor: @)
|
102
|
+
@pop_over = new Dante.Editor.PopOver(editor: @)
|
103
|
+
@pop_over.render().hide()
|
100
104
|
@tooltip_view.render().hide()
|
101
105
|
|
102
106
|
appendInitialContent: ()=>
|
@@ -107,12 +111,11 @@ class Dante.Editor extends Dante.View
|
|
107
111
|
@render()
|
108
112
|
$(@el).attr("contenteditable", "true")
|
109
113
|
$(@el).addClass("postField postField--body editable smart-media-plugin")
|
110
|
-
$(@el).wrap("<div class='postContent'><div class='notesSource'></div></div>")
|
114
|
+
$(@el).wrap("<article class='postArticle'><div class='postContent'><div class='notesSource'></div></div></article>")
|
111
115
|
@appendMenus()
|
112
116
|
@appendInitialContent() unless _.isEmpty @initial_html.trim()
|
113
117
|
@parseInitialMess()
|
114
118
|
|
115
|
-
|
116
119
|
restart: ()=>
|
117
120
|
@render()
|
118
121
|
|
@@ -175,7 +178,6 @@ class Dante.Editor extends Dante.View
|
|
175
178
|
precedingChar
|
176
179
|
|
177
180
|
isLastChar: ()->
|
178
|
-
#utils.log "#{$(@getNode()).text().trim().length} | #{@getCharacterPrecedingCaret().trim().length}"
|
179
181
|
$(@getNode()).text().trim().length is @getCharacterPrecedingCaret().trim().length
|
180
182
|
|
181
183
|
isFirstChar: ()->
|
@@ -197,7 +199,6 @@ class Dante.Editor extends Dante.View
|
|
197
199
|
range.collapse(true)
|
198
200
|
sel.removeAllRanges()
|
199
201
|
sel.addRange(range)
|
200
|
-
#@el.focus()
|
201
202
|
element.focus()
|
202
203
|
|
203
204
|
#set focus and caret position on element
|
@@ -237,7 +238,6 @@ class Dante.Editor extends Dante.View
|
|
237
238
|
(if root && root.contains(node) then node else null)
|
238
239
|
|
239
240
|
displayMenu: (sel)->
|
240
|
-
#return if _.isUndefined sel
|
241
241
|
setTimeout ()=>
|
242
242
|
@editor_menu.render()
|
243
243
|
pos = utils.getSelectionDimensions()
|
@@ -248,6 +248,13 @@ class Dante.Editor extends Dante.View
|
|
248
248
|
handleDrag: ()->
|
249
249
|
return false
|
250
250
|
|
251
|
+
handleGrafCaptionTyping: (ev)->
|
252
|
+
if _.isEmpty(utils.getNode().textContent.trim())
|
253
|
+
$(@getNode()).addClass("is-defaultValue")
|
254
|
+
else
|
255
|
+
$(@getNode()).removeClass("is-defaultValue")
|
256
|
+
|
257
|
+
|
251
258
|
#get text of selected and displays menu
|
252
259
|
handleTextSelection: (anchor_node)->
|
253
260
|
@editor_menu.hide()
|
@@ -270,6 +277,12 @@ class Dante.Editor extends Dante.View
|
|
270
277
|
$(".graf--first").html(@title_placeholder)
|
271
278
|
$(".graf--last").html(@body_placeholder)
|
272
279
|
|
280
|
+
displayPopOver: (ev)->
|
281
|
+
@pop_over.displayAt(ev)
|
282
|
+
|
283
|
+
hidePopOver: (ev)->
|
284
|
+
@pop_over.hide(ev)
|
285
|
+
|
273
286
|
handleGrafFigureSelectImg: (ev)->
|
274
287
|
utils.log "FIGURE SELECT"
|
275
288
|
element = ev.currentTarget
|
@@ -281,22 +294,10 @@ class Dante.Editor extends Dante.View
|
|
281
294
|
utils.log "FIGCAPTION"
|
282
295
|
element = ev.currentTarget
|
283
296
|
$(element).parent(".graf--figure").removeClass("is-mediaFocused")
|
284
|
-
#return false
|
285
|
-
#@setRangeAt( $(element).find('.imageCaption')[0] )
|
286
|
-
|
287
|
-
handleBlur: (ev)=>
|
288
|
-
#hide menu only if is not in use
|
289
|
-
setTimeout ()=>
|
290
|
-
utils.log "not in use"
|
291
|
-
#@editor_menu.hide() unless selected_menu
|
292
|
-
, 200
|
293
|
-
false
|
294
297
|
|
295
298
|
handleMouseUp: (ev)=>
|
296
299
|
utils.log "MOUSE UP"
|
297
300
|
anchor_node = @getNode()
|
298
|
-
#utils.log anchor_node
|
299
|
-
#utils.log ev.currentTarget
|
300
301
|
|
301
302
|
return if _.isNull(anchor_node)
|
302
303
|
|
@@ -337,7 +338,6 @@ class Dante.Editor extends Dante.View
|
|
337
338
|
|
338
339
|
when "Down"
|
339
340
|
#when graff-image selected but none selection is found
|
340
|
-
#debugger
|
341
341
|
if _.isUndefined(current_node) or !current_node.exists()
|
342
342
|
if $(".is-selected").exists()
|
343
343
|
current_node = $(".is-selected")
|
@@ -355,13 +355,12 @@ class Dante.Editor extends Dante.View
|
|
355
355
|
#if next element is embed select & focus it
|
356
356
|
if next_node.hasClass("graf--figure") && caret_node
|
357
357
|
n = next_node.find(".imageCaption")
|
358
|
-
@setRangeAt n[0]
|
359
358
|
@scrollTo(n)
|
360
359
|
utils.log "1 down"
|
361
360
|
utils.log n[0]
|
362
361
|
@skip_keyup = true
|
363
362
|
@selection().removeAllRanges()
|
364
|
-
|
363
|
+
@markAsSelected(next_node)
|
365
364
|
next_node.addClass("is-mediaFocused is-selected")
|
366
365
|
return false
|
367
366
|
#if current node is embed
|
@@ -394,11 +393,11 @@ class Dante.Editor extends Dante.View
|
|
394
393
|
if prev_node.hasClass("graf--figure")
|
395
394
|
utils.log "1 up"
|
396
395
|
n = prev_node.find(".imageCaption")
|
397
|
-
#@setRangeAt n[0]
|
398
396
|
@scrollTo(n)
|
399
397
|
@skip_keyup = true
|
400
398
|
@selection().removeAllRanges()
|
401
|
-
prev_node
|
399
|
+
@markAsSelected(prev_node)
|
400
|
+
prev_node.addClass("is-mediaFocused")
|
402
401
|
return false
|
403
402
|
|
404
403
|
else if prev_node.hasClass("graf--mixtapeEmbed")
|
@@ -418,15 +417,12 @@ class Dante.Editor extends Dante.View
|
|
418
417
|
else if prev_node.hasClass("graf")
|
419
418
|
n = current_node.prev(".graf")
|
420
419
|
num = n[0].childNodes.length
|
421
|
-
#@setRangeAt n[0], num
|
422
420
|
@scrollTo(n)
|
423
421
|
utils.log "4 up"
|
424
422
|
@skip_keyup = true
|
425
|
-
|
423
|
+
@markAsSelected(prev_node)
|
426
424
|
return false
|
427
425
|
|
428
|
-
utils.log "noting"
|
429
|
-
|
430
426
|
#parse text for initial mess
|
431
427
|
parseInitialMess: ()->
|
432
428
|
@setupElementsClasses $(@el).find('.section-inner') , ()=>
|
@@ -452,7 +448,7 @@ class Dante.Editor extends Dante.View
|
|
452
448
|
cbd = ev.originalEvent.clipboardData
|
453
449
|
pastedText = if _.isEmpty(cbd.getData('text/html')) then cbd.getData('text/plain') else cbd.getData('text/html')
|
454
450
|
|
455
|
-
|
451
|
+
utils.log(pastedText) # Process and handle text...
|
456
452
|
#detect if is html
|
457
453
|
if pastedText.match(/<\/*[a-z][^>]+?>/gi)
|
458
454
|
utils.log("HTML DETECTED ON PASTE")
|
@@ -603,7 +599,6 @@ class Dante.Editor extends Dante.View
|
|
603
599
|
else if parent.hasClass("is-extractable")
|
604
600
|
@tooltip_view.getExtractFromNode($(anchor_node))
|
605
601
|
|
606
|
-
|
607
602
|
#supress linebreak into embed page text unless last char
|
608
603
|
if parent.hasClass("graf--mixtapeEmbed") or parent.hasClass("graf--iframe") or parent.hasClass("graf--figure")
|
609
604
|
utils.log("supress linebreak from embed !(last char)")
|
@@ -626,17 +621,20 @@ class Dante.Editor extends Dante.View
|
|
626
621
|
if (anchor_node && @editor_menu.lineBreakReg.test(anchor_node.nodeName))
|
627
622
|
#new paragraph if it the last character
|
628
623
|
if @isLastChar()
|
629
|
-
utils.log "new paragraph if it the last character"
|
624
|
+
utils.log "new paragraph if it's the last character"
|
630
625
|
e.preventDefault()
|
631
626
|
@handleLineBreakWith("p", parent)
|
632
627
|
|
633
628
|
setTimeout ()=>
|
634
629
|
node = @getNode()
|
635
|
-
@markAsSelected( @getNode() ) #if anchor_node
|
636
|
-
@setupFirstAndLast()
|
637
630
|
#set name on new element
|
638
631
|
@setElementName($(node))
|
639
632
|
|
633
|
+
if node.nodeName.toLowerCase() is "div"
|
634
|
+
node = @replaceWith("p", $(node))[0]
|
635
|
+
@markAsSelected( $(node) ) #if anchor_node
|
636
|
+
@setupFirstAndLast()
|
637
|
+
|
640
638
|
#empty childs if text is empty
|
641
639
|
if _.isEmpty $(node).text().trim()
|
642
640
|
_.each $(node).children(), (n)->
|
@@ -682,15 +680,12 @@ class Dante.Editor extends Dante.View
|
|
682
680
|
if $(anchor_node).prev().hasClass("graf--mixtapeEmbed")
|
683
681
|
return false if @isFirstChar() && !_.isEmpty( $(anchor_node).text().trim() )
|
684
682
|
|
685
|
-
utils.log "sss"
|
686
683
|
utils.log anchor_node
|
687
684
|
if $(".is-selected").hasClass("graf--figure")
|
688
685
|
@replaceWith("p", $(".is-selected"))
|
689
686
|
@setRangeAt($(".is-selected")[0])
|
690
687
|
return false
|
691
688
|
|
692
|
-
|
693
|
-
|
694
689
|
#arrows key
|
695
690
|
#if _.contains([37,38,39,40], e.which)
|
696
691
|
#up & down
|
@@ -717,7 +712,7 @@ class Dante.Editor extends Dante.View
|
|
717
712
|
if @skip_keyup
|
718
713
|
@skip_keyup = null
|
719
714
|
utils.log "SKIP KEYUP"
|
720
|
-
return
|
715
|
+
return false
|
721
716
|
|
722
717
|
utils.log "KEYUP"
|
723
718
|
|
@@ -740,7 +735,13 @@ class Dante.Editor extends Dante.View
|
|
740
735
|
|
741
736
|
if $(utils_anchor_node).hasClass("section-content") || $(utils_anchor_node).hasClass("graf--first")
|
742
737
|
utils.log "SECTION DETECTED FROM KEYUP #{_.isEmpty($(utils_anchor_node).text())}"
|
743
|
-
|
738
|
+
if _.isEmpty($(utils_anchor_node).text())
|
739
|
+
next_graf = $(utils_anchor_node).next(".graf")[0]
|
740
|
+
if next_graf
|
741
|
+
@setRangeAt next_graf
|
742
|
+
$(utils_anchor_node).remove()
|
743
|
+
@setupFirstAndLast()
|
744
|
+
return false
|
744
745
|
|
745
746
|
if _.isNull(anchor_node)
|
746
747
|
@handleNullAnchor()
|
@@ -748,14 +749,19 @@ class Dante.Editor extends Dante.View
|
|
748
749
|
|
749
750
|
if $(anchor_node).hasClass("graf--first")
|
750
751
|
utils.log "THE FIRST ONE! UP"
|
752
|
+
|
753
|
+
if @.getSelectedText() is @.getNode().textContent
|
754
|
+
utils.log "remove selection dectected"
|
755
|
+
@.getNode().innerHTML = "<br>"
|
756
|
+
|
751
757
|
@markAsSelected(anchor_node)
|
752
758
|
@setupFirstAndLast()
|
753
759
|
false
|
754
760
|
|
755
|
-
if anchor_node
|
756
|
-
|
757
|
-
|
758
|
-
|
761
|
+
#if anchor_node
|
762
|
+
# @markAsSelected(anchor_node)
|
763
|
+
# @setupFirstAndLast()
|
764
|
+
# @displayTooltipAt($(@el).find(".is-selected"))
|
759
765
|
|
760
766
|
#arrows key
|
761
767
|
if _.contains([37,38,39,40], e.which)
|
@@ -778,6 +784,7 @@ class Dante.Editor extends Dante.View
|
|
778
784
|
from_element.replaceWith(new_paragraph)
|
779
785
|
@setRangeAt(new_paragraph[0])
|
780
786
|
@scrollTo new_paragraph
|
787
|
+
new_paragraph
|
781
788
|
|
782
789
|
#shows the (+) tooltip at current element
|
783
790
|
displayTooltipAt: (element)->
|
@@ -798,20 +805,6 @@ class Dante.Editor extends Dante.View
|
|
798
805
|
$(@el).find(".is-selected").removeClass("is-mediaFocused is-selected")
|
799
806
|
$(element).addClass("is-selected")
|
800
807
|
|
801
|
-
###
|
802
|
-
if $(element).prop("tagName").toLowerCase() is "figure"
|
803
|
-
$(element).addClass("is-mediaFocused")
|
804
|
-
n = utils.getNode()
|
805
|
-
utils.log n
|
806
|
-
|
807
|
-
n = utils.getNode()
|
808
|
-
utils.log n
|
809
|
-
if _.isUndefined n
|
810
|
-
$(element).addClass("is-mediaFocused")
|
811
|
-
else if $(n).prop("tagName").toLowerCase() is "figcaption"
|
812
|
-
$(element).removeClass("is-mediaFocused")
|
813
|
-
###
|
814
|
-
|
815
808
|
$(element).find(".defaultValue").remove()
|
816
809
|
#set reached top if element is first!
|
817
810
|
if $(element).hasClass("graf--first")
|
@@ -6,8 +6,6 @@ class Dante.Editor.Menu extends Dante.View
|
|
6
6
|
events:
|
7
7
|
"mousedown li" : "handleClick"
|
8
8
|
"click .dante-menu-linkinput .dante-menu-button": "closeInput"
|
9
|
-
"mouseenter" : "handleOver"
|
10
|
-
"mouseleave" : "handleOut"
|
11
9
|
"keypress input": "handleInputEnter"
|
12
10
|
|
13
11
|
initialize: (opts={})=>
|
@@ -52,7 +50,6 @@ class Dante.Editor.Menu extends Dante.View
|
|
52
50
|
render: ()=>
|
53
51
|
$(@el).html(@template())
|
54
52
|
@show()
|
55
|
-
#@delegateEvents()
|
56
53
|
|
57
54
|
handleClick: (ev)->
|
58
55
|
element = $(ev.currentTarget).find('.dante-icon')
|
@@ -62,8 +59,11 @@ class Dante.Editor.Menu extends Dante.View
|
|
62
59
|
@savedSel = utils.saveSelection()
|
63
60
|
|
64
61
|
if /(?:createlink)/.test(action)
|
65
|
-
$(
|
66
|
-
|
62
|
+
if $(ev.currentTarget).hasClass("active")
|
63
|
+
@removeLink()
|
64
|
+
else
|
65
|
+
$(@el).addClass("dante-menu--linkmode")
|
66
|
+
input.focus()
|
67
67
|
else
|
68
68
|
@menuApply action
|
69
69
|
|
@@ -78,6 +78,11 @@ class Dante.Editor.Menu extends Dante.View
|
|
78
78
|
utils.restoreSelection(@savedSel)
|
79
79
|
return @createlink( $(e.target) )
|
80
80
|
|
81
|
+
removeLink: ()->
|
82
|
+
@menuApply "unlink"
|
83
|
+
elem = @current_editor.getNode()
|
84
|
+
@current_editor.cleanContents($(elem))
|
85
|
+
|
81
86
|
createlink: (input) =>
|
82
87
|
$(@el).removeClass("dante-menu--linkmode")
|
83
88
|
if input.val()
|
@@ -160,12 +165,6 @@ class Dante.Editor.Menu extends Dante.View
|
|
160
165
|
el = el.parentNode
|
161
166
|
nodes
|
162
167
|
|
163
|
-
handleOut: ()->
|
164
|
-
selected_menu = false
|
165
|
-
|
166
|
-
handleOver: ()->
|
167
|
-
selected_menu = true
|
168
|
-
|
169
168
|
displayHighlights: ()->
|
170
169
|
#remove all active links
|
171
170
|
$(@el).find(".active").removeClass("active")
|
@@ -207,6 +206,7 @@ class Dante.Editor.Menu extends Dante.View
|
|
207
206
|
|
208
207
|
show: ()->
|
209
208
|
$(@el).addClass("dante-menu--active")
|
209
|
+
@closeInput()
|
210
210
|
@displayHighlights()
|
211
211
|
|
212
212
|
hide: ()->
|
@@ -0,0 +1,76 @@
|
|
1
|
+
utils = Dante.utils
|
2
|
+
|
3
|
+
class Dante.Editor.PopOver extends Dante.View
|
4
|
+
el: "body"
|
5
|
+
|
6
|
+
events:
|
7
|
+
"mouseover .popover": "cancelHide"
|
8
|
+
"mouseout .popover": "hide"
|
9
|
+
|
10
|
+
initialize: (opts = {})->
|
11
|
+
utils.log("initialized popover")
|
12
|
+
@editor = opts.editor
|
13
|
+
@hideTimeout
|
14
|
+
@settings = {timeout: 300}
|
15
|
+
|
16
|
+
template: ()->
|
17
|
+
"<div class='popover popover--tooltip popover--Linktooltip popover--bottom is-active'>
|
18
|
+
<div class='popover-inner'>
|
19
|
+
<a href='#' target='_blank'> Link </a>
|
20
|
+
</div>
|
21
|
+
<div class='popover-arrow'>
|
22
|
+
</div>
|
23
|
+
</div>"
|
24
|
+
|
25
|
+
#display & copy original link
|
26
|
+
positionAt: (ev)->
|
27
|
+
target = $(ev.currentTarget)
|
28
|
+
target_positions = @resolveTargetPosition(target)
|
29
|
+
target_offset = target.offset()
|
30
|
+
target_width = target.outerWidth()
|
31
|
+
target_height = target.outerHeight()
|
32
|
+
popover_width = $(@el).find(".popover").outerWidth()
|
33
|
+
top_value = target_positions.top + target_height
|
34
|
+
left_value = target_offset.left + (target_width/2) - (popover_width/2)
|
35
|
+
|
36
|
+
$(@el).find(".popover")
|
37
|
+
.css("top", top_value)
|
38
|
+
.css("left", left_value )
|
39
|
+
.show()
|
40
|
+
|
41
|
+
@handleDirection(target)
|
42
|
+
|
43
|
+
displayAt: (ev)->
|
44
|
+
@cancelHide()
|
45
|
+
#debugger
|
46
|
+
target = $(ev.currentTarget)
|
47
|
+
$(@el).find(".popover-inner a").text( target.attr('href') ).attr('href', target.attr("href") )
|
48
|
+
@positionAt(ev)
|
49
|
+
$(@el).find(".popover--tooltip").css("pointer-events", "auto")
|
50
|
+
$(@el).show()
|
51
|
+
|
52
|
+
cancelHide: ()->
|
53
|
+
utils.log "Cancel Hide"
|
54
|
+
clearTimeout @hideTimeout
|
55
|
+
|
56
|
+
hide: (ev)->
|
57
|
+
@cancelHide()
|
58
|
+
@hideTimeout = setTimeout ()=>
|
59
|
+
$(@el).find(".popover").hide()
|
60
|
+
, @settings.timeout
|
61
|
+
|
62
|
+
resolveTargetPosition: (target)->
|
63
|
+
if target.parents(".graf--mixtapeEmbed").exists()
|
64
|
+
target.parents(".graf--mixtapeEmbed").position()
|
65
|
+
else
|
66
|
+
target.position()
|
67
|
+
|
68
|
+
|
69
|
+
handleDirection: (target)->
|
70
|
+
if target.parents(".graf--mixtapeEmbed").exists()
|
71
|
+
$(@el).find(".popover").removeClass("popover--bottom").addClass("popover--top")
|
72
|
+
else
|
73
|
+
$(@el).find(".popover").removeClass("popover--top").addClass("popover--bottom")
|
74
|
+
|
75
|
+
render: ()->
|
76
|
+
$(@template()).insertAfter(@editor.$el)
|
@@ -0,0 +1,52 @@
|
|
1
|
+
.imageCaption {
|
2
|
+
& {
|
3
|
+
position: absolute;
|
4
|
+
left: -172px;
|
5
|
+
width: 150px;
|
6
|
+
top: 0;
|
7
|
+
text-align: right;
|
8
|
+
margin-top: 0;
|
9
|
+
font-family: "freight-text-pro",Georgia,Cambria,"Times New Roman",Times,serif;
|
10
|
+
letter-spacing: 0.01rem;
|
11
|
+
font-weight: 400;
|
12
|
+
font-style: italic;
|
13
|
+
font-size: 14px;
|
14
|
+
line-height: 1.4;
|
15
|
+
color: rgba(0,0,0,0.6);
|
16
|
+
outline: 0;
|
17
|
+
z-index: 300;
|
18
|
+
}
|
19
|
+
&:before {
|
20
|
+
width: 25%;
|
21
|
+
margin-left: 75%;
|
22
|
+
border-top: 1px solid rgba(0,0,0,0.15);
|
23
|
+
display: block;
|
24
|
+
content: "";
|
25
|
+
margin-bottom: 10px;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
@media (max-width: 1200px) {
|
29
|
+
.imageCaption,
|
30
|
+
.postField--outsetCenterImage > .imageCaption {
|
31
|
+
position: relative;
|
32
|
+
width: 100%;
|
33
|
+
text-align: center;
|
34
|
+
left: 0;
|
35
|
+
margin-top: 10px;
|
36
|
+
}
|
37
|
+
.imageCaption:before {
|
38
|
+
display: none;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
figure.is-defaultValue .imageCaption,
|
43
|
+
.graf--sectionCaption.is-defaultValue {
|
44
|
+
display: none;
|
45
|
+
}
|
46
|
+
|
47
|
+
.graf--figure.is-mediaFocused .imageCaption,
|
48
|
+
.graf--figure.is-defaultValue.is-selected .imageCaption,
|
49
|
+
section.is-mediaFocused .graf--sectionCaption,
|
50
|
+
.graf--sectionCaption.is-defaultValue.is-selected {
|
51
|
+
display: block;
|
52
|
+
}
|