Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Зуев Егор
/
wiki.dev
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Authored by
Dan Brown
2016-05-28 13:24:07 +0100
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Commit
f602b088acd1ae8964be551ec2e3b4f922ce1e0b
f602b088
1 parent
9d3f329b
Added basic markdown scroll syncing
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
8 deletions
resources/assets/js/directives.js
resources/views/pages/form.blade.php
resources/assets/js/directives.js
View file @
f602b08
...
...
@@ -265,17 +265,48 @@ module.exports = function (ngApp, events) {
link
:
function
(
scope
,
element
,
attrs
)
{
// Elements
var
input
=
element
.
find
(
'textarea[markdown-input]'
);
var
insertImage
=
element
.
find
(
'button[data-action="insertImage"]'
);
const
input
=
element
.
find
(
'textarea[markdown-input]'
);
const
display
=
element
.
find
(
'.markdown-display'
).
first
();
const
insertImage
=
element
.
find
(
'button[data-action="insertImage"]'
);
var
currentCaretPos
=
0
;
let
currentCaretPos
=
0
;
input
.
blur
(
(
event
)
=>
{
input
.
blur
(
event
=>
{
currentCaretPos
=
input
[
0
].
selectionStart
;
});
// Scroll sync
let
inputScrollHeight
,
inputHeight
,
displayScrollHeight
,
displayHeight
;
function
setScrollHeights
()
{
inputScrollHeight
=
input
[
0
].
scrollHeight
;
inputHeight
=
input
.
height
();
displayScrollHeight
=
display
[
0
].
scrollHeight
;
displayHeight
=
display
.
height
();
}
setTimeout
(()
=>
{
setScrollHeights
();
},
200
);
window
.
addEventListener
(
'resize'
,
setScrollHeights
);
let
scrollDebounceTime
=
800
;
let
lastScroll
=
0
;
input
.
on
(
'scroll'
,
event
=>
{
let
now
=
Date
.
now
();
if
(
now
-
lastScroll
>
scrollDebounceTime
)
{
setScrollHeights
()
}
let
scrollPercent
=
(
input
.
scrollTop
()
/
(
inputScrollHeight
-
inputHeight
));
let
displayScrollY
=
(
displayScrollHeight
-
displayHeight
)
*
scrollPercent
;
display
.
scrollTop
(
displayScrollY
);
lastScroll
=
now
;
});
// Insert image shortcut
input
.
keydown
(
(
event
)
=>
{
input
.
keydown
(
event
=>
{
if
(
event
.
which
===
73
&&
event
.
ctrlKey
&&
event
.
shiftKey
)
{
event
.
preventDefault
();
var
caretPos
=
input
[
0
].
selectionStart
;
...
...
@@ -289,8 +320,8 @@ module.exports = function (ngApp, events) {
});
// Insert image from image manager
insertImage
.
click
(
(
event
)
=>
{
window
.
ImageManager
.
showExternal
(
(
image
)
=>
{
insertImage
.
click
(
event
=>
{
window
.
ImageManager
.
showExternal
(
image
=>
{
var
caretPos
=
currentCaretPos
;
var
currentContent
=
input
.
val
();
var
mdImageText
=
""
;
...
...
resources/views/pages/form.blade.php
View file @
f602b08
...
...
@@ -61,7 +61,7 @@
<button
class=
"text-button"
type=
"button"
data-action=
"insertImage"
><i
class=
"zmdi zmdi-image"
></i>
Insert Image
</button>
</div>
</div>
<textarea
markdown-input
md-change=
"editorChange"
md-model=
"editContent"
name=
"markdown"
rows=
"5"
<textarea
markdown-input
md-change=
"editorChange"
id=
"markdown-editor-input"
md-model=
"editContent"
name=
"markdown"
rows=
"5"
@
if
($
errors-
>
has('markdown')) class="neg" @endif>@if(isset($model) || old('markdown')){{htmlspecialchars( old('markdown') ? old('markdown') : ($model->markdown === '' ? $model->html : $model->markdown))}}@endif
</textarea>
</div>
...
...
Please
register
or
sign in
to post a comment