dante-editor 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
}
|