Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
leizi929
Sortable
提交
70fc6dec
S
Sortable
项目概览
leizi929
/
Sortable
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Sortable
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
70fc6dec
编写于
4月 22, 2014
作者:
L
Lebedev Konstantin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #42 from ghengeveld/master
Disable 'draggable' attribute on drop. Fixes #41
上级
254ef956
d972704b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
2 addition
and
1 deletion
+2
-1
Sortable.js
Sortable.js
+1
-0
Sortable.min.js
Sortable.min.js
+1
-1
未找到文件。
Sortable.js
浏览文件 @
70fc6dec
...
...
@@ -350,6 +350,7 @@
}
if
(
dragEl
){
_disableDraggable
(
dragEl
);
_toggleClass
(
dragEl
,
this
.
options
.
ghostClass
,
false
);
if
(
!
rootEl
.
contains
(
dragEl
)
){
...
...
Sortable.min.js
浏览文件 @
70fc6dec
/*! Sortable 0.1.9 - MIT | git://github.com/rubaxa/Sortable.git */
!
function
(
a
){
"
use strict
"
;
"
function
"
==
typeof
define
&&
define
.
amd
?
define
(
a
):
"
undefined
"
!=
typeof
module
&&
"
undefined
"
!=
typeof
module
.
exports
?
module
.
exports
=
a
():
window
.
Sortable
=
a
()}(
function
(){
"
use strict
"
;
function
a
(
a
,
c
){
this
.
el
=
a
,
this
.
options
=
c
=
c
||
{},
c
.
group
=
c
.
group
||
Math
.
random
(),
c
.
handle
=
c
.
handle
||
null
,
c
.
draggable
=
c
.
draggable
||
a
.
children
[
0
]
&&
a
.
children
[
0
].
nodeName
||
(
/
[
uo
]
l/i
.
test
(
a
.
nodeName
)?
"
li
"
:
"
*
"
),
c
.
ghostClass
=
c
.
ghostClass
||
"
sortable-ghost
"
,
c
.
onAdd
=
b
(
this
,
c
.
onAdd
||
D
),
c
.
onUpdate
=
b
(
this
,
c
.
onUpdate
||
D
),
c
.
onRemove
=
b
(
this
,
c
.
onRemove
||
D
),
a
[
w
]
=
c
.
group
;
for
(
var
d
in
this
)
"
_
"
===
d
.
charAt
(
0
)
&&
(
this
[
d
]
=
b
(
this
,
this
[
d
]));
e
(
a
,
"
add
"
,
c
.
onAdd
),
e
(
a
,
"
update
"
,
c
.
onUpdate
),
e
(
a
,
"
remove
"
,
c
.
onRemove
),
e
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
e
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
A
&&
e
(
a
,
"
selectstart
"
,
this
.
_onTapStart
),
e
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
e
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
F
.
push
(
this
.
_onDragOver
)}
function
b
(
a
,
b
){
var
c
=
E
.
call
(
arguments
,
2
);
return
b
.
bind
?
b
.
bind
.
apply
(
b
,[
a
].
concat
(
c
)):
function
(){
return
b
.
apply
(
a
,
c
.
concat
(
E
.
call
(
arguments
)))}}
function
c
(
a
,
b
,
c
){
if
(
"
*
"
===
b
)
return
a
;
if
(
a
){
c
=
c
||
y
,
b
=
b
.
split
(
"
.
"
);
var
d
=
b
.
shift
().
toUpperCase
(),
e
=
new
RegExp
(
"
\\
s(
"
+
b
.
join
(
"
|
"
)
+
"
)
\\
s
"
,
"
g
"
);
do
if
(
!
(
""
!==
d
&&
a
.
nodeName
!=
d
||
b
.
length
&&
((
"
"
+
a
.
className
+
"
"
).
match
(
e
)
||
[]).
length
!=
b
.
length
))
return
a
;
while
(
a
!==
c
&&
(
a
=
a
.
parentNode
))}
return
null
}
function
d
(
a
){
a
.
dataTransfer
.
dropEffect
=
"
move
"
,
a
.
preventDefault
()}
function
e
(
a
,
b
,
c
){
a
.
addEventListener
(
b
,
c
,
!
1
)}
function
f
(
a
,
b
,
c
){
a
.
removeEventListener
(
b
,
c
,
!
1
)}
function
g
(
a
,
b
,
c
){
if
(
a
)
if
(
a
.
classList
)
a
.
classList
[
c
?
"
add
"
:
"
remove
"
](
b
);
else
{
var
d
=
(
"
"
+
a
.
className
+
"
"
).
replace
(
/
\s
+/g
,
"
"
).
replace
(
"
"
+
b
+
"
"
,
""
);
a
.
className
=
d
+
(
c
?
"
"
+
b
:
""
)}}
function
h
(
a
,
b
,
c
){
if
(
a
&&
a
.
style
){
if
(
void
0
===
c
)
return
y
.
defaultView
&&
y
.
defaultView
.
getComputedStyle
?
c
=
y
.
defaultView
.
getComputedStyle
(
a
,
""
):
a
.
currentStyle
&&
(
c
=
a
.
currentStyle
),
void
0
===
b
?
c
:
c
[
b
];
a
.
style
[
b
]
=
c
+
(
"
string
"
==
typeof
c
?
""
:
"
px
"
)}}
function
i
(
a
,
b
,
c
){
if
(
a
){
var
d
=
a
.
getElementsByTagName
(
b
),
e
=
0
,
f
=
d
.
length
;
if
(
c
)
for
(;
f
>
e
;
e
++
)
c
(
d
[
e
],
e
);
return
d
}
return
[]}
function
j
(
a
){
return
a
.
draggable
=!
1
}
function
k
(){
B
=!
1
}
function
l
(
a
,
b
){
var
c
=
a
.
lastElementChild
.
getBoundingClientRect
();
return
b
.
clientY
-
(
c
.
top
+
c
.
height
)
>
5
}
var
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
,
v
,
w
=
"
Sortable
"
+
(
new
Date
).
getTime
(),
x
=
window
,
y
=
x
.
document
,
z
=
x
.
parseInt
,
A
=!!
y
.
createElement
(
"
div
"
).
dragDrop
,
B
=!
1
,
C
=
function
(
a
,
b
){
var
c
=
y
.
createEvent
(
"
Event
"
);
return
c
.
initEvent
(
a
,
!
0
,
!
0
),
c
.
item
=
b
,
c
},
D
=
function
(){},
E
=
[].
slice
,
F
=
[];
return
a
.
prototype
=
{
constructor
:
a
,
_applyEffects
:
function
(){
g
(
m
,
this
.
options
.
ghostClass
,
!
0
)},
_onTapStart
:
function
(
a
){
var
b
=
a
.
touches
&&
a
.
touches
[
0
],
f
=
(
b
||
a
).
target
,
g
=
this
.
options
,
h
=
this
.
el
;
if
(
g
.
handle
&&
(
f
=
c
(
f
,
g
.
handle
,
h
)),
f
=
c
(
f
,
g
.
draggable
,
h
),
f
&&
"
selectstart
"
==
a
.
type
&&
"
A
"
!=
f
.
tagName
&&
"
IMG
"
!=
f
.
tagName
&&
f
.
dragDrop
(),
f
&&!
m
&&
f
.
parentNode
===
h
){
u
=
a
,
f
.
draggable
=!
0
,
i
(
f
,
"
a
"
,
j
),
i
(
f
,
"
img
"
,
j
),
b
&&
(
u
=
{
target
:
f
,
clientX
:
b
.
clientX
,
clientY
:
b
.
clientY
},
this
.
_onDragStart
(
u
,
!
0
),
a
.
preventDefault
()),
e
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
e
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
e
(
y
,
"
dragover
"
,
d
);
try
{
y
.
selection
?
y
.
selection
.
empty
():
window
.
getSelection
().
removeAllRanges
()}
catch
(
k
){}}},
_emulateDragOver
:
function
(){
if
(
v
){
h
(
n
,
"
display
"
,
"
none
"
);
var
a
=
y
.
elementFromPoint
(
v
.
clientX
,
v
.
clientY
),
b
=
a
,
c
=
this
.
options
.
group
,
d
=
F
.
length
;
if
(
b
)
do
{
if
(
b
[
w
]
===
c
){
for
(;
d
--
;)
F
[
d
]({
clientX
:
v
.
clientX
,
clientY
:
v
.
clientY
,
target
:
a
,
rootEl
:
b
});
break
}
a
=
b
}
while
(
b
=
b
.
parentNode
);
h
(
n
,
"
display
"
,
""
)}},
_onTouchMove
:
function
(
a
){
if
(
u
){
var
b
=
a
.
touches
[
0
],
c
=
b
.
clientX
-
u
.
clientX
,
d
=
b
.
clientY
-
u
.
clientY
;
v
=
b
,
h
(
n
,
"
webkitTransform
"
,
"
translate3d(
"
+
c
+
"
px,
"
+
d
+
"
px,0)
"
)}},
_onDragStart
:
function
(
a
,
b
){
var
c
=
a
.
target
,
d
=
a
.
dataTransfer
;
if
(
o
=
this
.
el
,
m
=
c
,
p
=
c
.
nextSibling
,
t
=
this
.
options
.
group
,
b
){
var
f
,
g
=
c
.
getBoundingClientRect
(),
i
=
h
(
c
);
n
=
c
.
cloneNode
(
!
0
),
h
(
n
,
"
top
"
,
g
.
top
-
z
(
i
.
marginTop
,
10
)),
h
(
n
,
"
left
"
,
g
.
left
-
z
(
i
.
marginLeft
,
10
)),
h
(
n
,
"
width
"
,
g
.
width
),
h
(
n
,
"
height
"
,
g
.
height
),
h
(
n
,
"
opacity
"
,
"
0.8
"
),
h
(
n
,
"
position
"
,
"
fixed
"
),
h
(
n
,
"
zIndex
"
,
"
100000
"
),
o
.
appendChild
(
n
),
f
=
n
.
getBoundingClientRect
(),
h
(
n
,
"
width
"
,
2
*
g
.
width
-
f
.
width
),
h
(
n
,
"
height
"
,
2
*
g
.
height
-
f
.
height
),
e
(
y
,
"
touchmove
"
,
this
.
_onTouchMove
),
e
(
y
,
"
touchend
"
,
this
.
_onDrop
),
this
.
_loopId
=
setInterval
(
this
.
_emulateDragOver
,
150
)}
else
d
.
effectAllowed
=
"
move
"
,
d
.
setData
(
"
Text
"
,
c
.
textContent
),
e
(
y
,
"
drop
"
,
this
.
_onDrop
);
setTimeout
(
this
.
_applyEffects
)},
_onDragOver
:
function
(
a
){
if
(
!
B
&&
t
===
this
.
options
.
group
&&
(
void
0
===
a
.
rootEl
||
a
.
rootEl
===
this
.
el
)){
var
b
=
this
.
el
,
d
=
c
(
a
.
target
,
this
.
options
.
draggable
,
b
);
if
(
0
===
b
.
children
.
length
||
b
.
children
[
0
]
===
n
||
b
===
a
.
target
&&
l
(
b
,
a
))
b
.
appendChild
(
m
);
else
if
(
d
&&
d
!==
m
&&
void
0
!==
d
.
parentNode
[
w
]){
q
!==
d
&&
(
q
=
d
,
r
=
h
(
d
),
s
=
d
.
getBoundingClientRect
());
var
e
,
f
=
s
,
g
=
f
.
right
-
f
.
left
,
i
=
f
.
bottom
-
f
.
top
,
j
=
/left|right|inline/
.
test
(
r
.
cssFloat
+
r
.
display
),
o
=
(
j
?(
a
.
clientX
-
f
.
left
)
/
g
:(
a
.
clientY
-
f
.
top
)
/
i
)
>
.
5
,
p
=
d
.
offsetWidth
>
m
.
offsetWidth
,
u
=
d
.
offsetHeight
>
m
.
offsetHeight
,
v
=
d
.
nextSibling
;
B
=!
0
,
setTimeout
(
k
,
30
),
e
=
j
?
d
.
previousElementSibling
===
m
&&!
p
||
o
>
.
5
&&
p
:
d
.
nextElementSibling
!==
m
&&!
u
||
o
>
.
5
&&
u
,
e
&&!
v
?
b
.
appendChild
(
m
):
d
.
parentNode
.
insertBefore
(
m
,
e
?
v
:
d
)}}},
_onDrop
:
function
(
a
){
clearInterval
(
this
.
_loopId
),
f
(
y
,
"
drop
"
,
this
.
_onDrop
),
f
(
y
,
"
dragover
"
,
d
),
f
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
f
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
f
(
this
.
el
,
"
selectstart
"
,
this
.
_onTapStart
),
f
(
y
,
"
touchmove
"
,
this
.
_onTouchMove
),
f
(
y
,
"
touchend
"
,
this
.
_onDrop
),
a
&&
(
a
.
preventDefault
(),
a
.
stopPropagation
(),
n
&&
n
.
parentNode
.
removeChild
(
n
),
m
&&
(
g
(
m
,
this
.
options
.
ghostClass
,
!
1
),
o
.
contains
(
m
)?
m
.
nextSibling
!==
p
&&
m
.
dispatchEvent
(
C
(
"
update
"
,
m
)):(
o
.
dispatchEvent
(
C
(
"
remove
"
,
m
)),
m
.
dispatchEvent
(
C
(
"
add
"
,
m
)))),
o
=
m
=
n
=
p
=
u
=
v
=
q
=
r
=
t
=
null
)},
destroy
:
function
(){
var
a
=
this
.
el
,
b
=
this
.
options
;
f
(
a
,
"
add
"
,
b
.
onAdd
),
f
(
a
,
"
update
"
,
b
.
onUpdate
),
f
(
a
,
"
remove
"
,
b
.
onRemove
),
f
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
f
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
f
(
a
,
"
selectstart
"
,
this
.
_onTapStart
),
f
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
f
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
Array
.
prototype
.
forEach
.
call
(
a
.
querySelectorAll
(
"
[draggable]
"
),
function
(
a
){
a
.
removeAttribute
(
"
draggable
"
)}),
F
.
splice
(
F
.
indexOf
(
this
.
_onDragOver
),
1
),
this
.
_onDrop
(),
this
.
el
=
null
}},
a
.
utils
=
{
on
:
e
,
off
:
f
,
css
:
h
,
find
:
i
,
bind
:
b
,
closest
:
c
,
toggleClass
:
g
},
a
.
version
=
"
0.1.9
"
,
a
});
\ No newline at end of file
!
function
(
a
){
"
use strict
"
;
"
function
"
==
typeof
define
&&
define
.
amd
?
define
(
a
):
"
undefined
"
!=
typeof
module
&&
"
undefined
"
!=
typeof
module
.
exports
?
module
.
exports
=
a
():
window
.
Sortable
=
a
()}(
function
(){
"
use strict
"
;
function
a
(
a
,
c
){
this
.
el
=
a
,
this
.
options
=
c
=
c
||
{},
c
.
group
=
c
.
group
||
Math
.
random
(),
c
.
handle
=
c
.
handle
||
null
,
c
.
draggable
=
c
.
draggable
||
a
.
children
[
0
]
&&
a
.
children
[
0
].
nodeName
||
(
/
[
uo
]
l/i
.
test
(
a
.
nodeName
)?
"
li
"
:
"
*
"
),
c
.
ghostClass
=
c
.
ghostClass
||
"
sortable-ghost
"
,
c
.
onAdd
=
b
(
this
,
c
.
onAdd
||
D
),
c
.
onUpdate
=
b
(
this
,
c
.
onUpdate
||
D
),
c
.
onRemove
=
b
(
this
,
c
.
onRemove
||
D
),
a
[
w
]
=
c
.
group
;
for
(
var
d
in
this
)
"
_
"
===
d
.
charAt
(
0
)
&&
(
this
[
d
]
=
b
(
this
,
this
[
d
]));
e
(
a
,
"
add
"
,
c
.
onAdd
),
e
(
a
,
"
update
"
,
c
.
onUpdate
),
e
(
a
,
"
remove
"
,
c
.
onRemove
),
e
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
e
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
A
&&
e
(
a
,
"
selectstart
"
,
this
.
_onTapStart
),
e
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
e
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
F
.
push
(
this
.
_onDragOver
)}
function
b
(
a
,
b
){
var
c
=
E
.
call
(
arguments
,
2
);
return
b
.
bind
?
b
.
bind
.
apply
(
b
,[
a
].
concat
(
c
)):
function
(){
return
b
.
apply
(
a
,
c
.
concat
(
E
.
call
(
arguments
)))}}
function
c
(
a
,
b
,
c
){
if
(
"
*
"
===
b
)
return
a
;
if
(
a
){
c
=
c
||
y
,
b
=
b
.
split
(
"
.
"
);
var
d
=
b
.
shift
().
toUpperCase
(),
e
=
new
RegExp
(
"
\\
s(
"
+
b
.
join
(
"
|
"
)
+
"
)
\\
s
"
,
"
g
"
);
do
if
(
!
(
""
!==
d
&&
a
.
nodeName
!=
d
||
b
.
length
&&
((
"
"
+
a
.
className
+
"
"
).
match
(
e
)
||
[]).
length
!=
b
.
length
))
return
a
;
while
(
a
!==
c
&&
(
a
=
a
.
parentNode
))}
return
null
}
function
d
(
a
){
a
.
dataTransfer
.
dropEffect
=
"
move
"
,
a
.
preventDefault
()}
function
e
(
a
,
b
,
c
){
a
.
addEventListener
(
b
,
c
,
!
1
)}
function
f
(
a
,
b
,
c
){
a
.
removeEventListener
(
b
,
c
,
!
1
)}
function
g
(
a
,
b
,
c
){
if
(
a
)
if
(
a
.
classList
)
a
.
classList
[
c
?
"
add
"
:
"
remove
"
](
b
);
else
{
var
d
=
(
"
"
+
a
.
className
+
"
"
).
replace
(
/
\s
+/g
,
"
"
).
replace
(
"
"
+
b
+
"
"
,
""
);
a
.
className
=
d
+
(
c
?
"
"
+
b
:
""
)}}
function
h
(
a
,
b
,
c
){
if
(
a
&&
a
.
style
){
if
(
void
0
===
c
)
return
y
.
defaultView
&&
y
.
defaultView
.
getComputedStyle
?
c
=
y
.
defaultView
.
getComputedStyle
(
a
,
""
):
a
.
currentStyle
&&
(
c
=
a
.
currentStyle
),
void
0
===
b
?
c
:
c
[
b
];
a
.
style
[
b
]
=
c
+
(
"
string
"
==
typeof
c
?
""
:
"
px
"
)}}
function
i
(
a
,
b
,
c
){
if
(
a
){
var
d
=
a
.
getElementsByTagName
(
b
),
e
=
0
,
f
=
d
.
length
;
if
(
c
)
for
(;
f
>
e
;
e
++
)
c
(
d
[
e
],
e
);
return
d
}
return
[]}
function
j
(
a
){
return
a
.
draggable
=!
1
}
function
k
(){
B
=!
1
}
function
l
(
a
,
b
){
var
c
=
a
.
lastElementChild
.
getBoundingClientRect
();
return
b
.
clientY
-
(
c
.
top
+
c
.
height
)
>
5
}
var
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
,
v
,
w
=
"
Sortable
"
+
(
new
Date
).
getTime
(),
x
=
window
,
y
=
x
.
document
,
z
=
x
.
parseInt
,
A
=!!
y
.
createElement
(
"
div
"
).
dragDrop
,
B
=!
1
,
C
=
function
(
a
,
b
){
var
c
=
y
.
createEvent
(
"
Event
"
);
return
c
.
initEvent
(
a
,
!
0
,
!
0
),
c
.
item
=
b
,
c
},
D
=
function
(){},
E
=
[].
slice
,
F
=
[];
return
a
.
prototype
=
{
constructor
:
a
,
_applyEffects
:
function
(){
g
(
m
,
this
.
options
.
ghostClass
,
!
0
)},
_onTapStart
:
function
(
a
){
var
b
=
a
.
touches
&&
a
.
touches
[
0
],
f
=
(
b
||
a
).
target
,
g
=
this
.
options
,
h
=
this
.
el
;
if
(
g
.
handle
&&
(
f
=
c
(
f
,
g
.
handle
,
h
)),
f
=
c
(
f
,
g
.
draggable
,
h
),
f
&&
"
selectstart
"
==
a
.
type
&&
"
A
"
!=
f
.
tagName
&&
"
IMG
"
!=
f
.
tagName
&&
f
.
dragDrop
(),
f
&&!
m
&&
f
.
parentNode
===
h
){
u
=
a
,
f
.
draggable
=!
0
,
i
(
f
,
"
a
"
,
j
),
i
(
f
,
"
img
"
,
j
),
b
&&
(
u
=
{
target
:
f
,
clientX
:
b
.
clientX
,
clientY
:
b
.
clientY
},
this
.
_onDragStart
(
u
,
!
0
),
a
.
preventDefault
()),
e
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
e
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
e
(
y
,
"
dragover
"
,
d
);
try
{
y
.
selection
?
y
.
selection
.
empty
():
window
.
getSelection
().
removeAllRanges
()}
catch
(
k
){}}},
_emulateDragOver
:
function
(){
if
(
v
){
h
(
n
,
"
display
"
,
"
none
"
);
var
a
=
y
.
elementFromPoint
(
v
.
clientX
,
v
.
clientY
),
b
=
a
,
c
=
this
.
options
.
group
,
d
=
F
.
length
;
if
(
b
)
do
{
if
(
b
[
w
]
===
c
){
for
(;
d
--
;)
F
[
d
]({
clientX
:
v
.
clientX
,
clientY
:
v
.
clientY
,
target
:
a
,
rootEl
:
b
});
break
}
a
=
b
}
while
(
b
=
b
.
parentNode
);
h
(
n
,
"
display
"
,
""
)}},
_onTouchMove
:
function
(
a
){
if
(
u
){
var
b
=
a
.
touches
[
0
],
c
=
b
.
clientX
-
u
.
clientX
,
d
=
b
.
clientY
-
u
.
clientY
;
v
=
b
,
h
(
n
,
"
webkitTransform
"
,
"
translate3d(
"
+
c
+
"
px,
"
+
d
+
"
px,0)
"
)}},
_onDragStart
:
function
(
a
,
b
){
var
c
=
a
.
target
,
d
=
a
.
dataTransfer
;
if
(
o
=
this
.
el
,
m
=
c
,
p
=
c
.
nextSibling
,
t
=
this
.
options
.
group
,
b
){
var
f
,
g
=
c
.
getBoundingClientRect
(),
i
=
h
(
c
);
n
=
c
.
cloneNode
(
!
0
),
h
(
n
,
"
top
"
,
g
.
top
-
z
(
i
.
marginTop
,
10
)),
h
(
n
,
"
left
"
,
g
.
left
-
z
(
i
.
marginLeft
,
10
)),
h
(
n
,
"
width
"
,
g
.
width
),
h
(
n
,
"
height
"
,
g
.
height
),
h
(
n
,
"
opacity
"
,
"
0.8
"
),
h
(
n
,
"
position
"
,
"
fixed
"
),
h
(
n
,
"
zIndex
"
,
"
100000
"
),
o
.
appendChild
(
n
),
f
=
n
.
getBoundingClientRect
(),
h
(
n
,
"
width
"
,
2
*
g
.
width
-
f
.
width
),
h
(
n
,
"
height
"
,
2
*
g
.
height
-
f
.
height
),
e
(
y
,
"
touchmove
"
,
this
.
_onTouchMove
),
e
(
y
,
"
touchend
"
,
this
.
_onDrop
),
this
.
_loopId
=
setInterval
(
this
.
_emulateDragOver
,
150
)}
else
d
.
effectAllowed
=
"
move
"
,
d
.
setData
(
"
Text
"
,
c
.
textContent
),
e
(
y
,
"
drop
"
,
this
.
_onDrop
);
setTimeout
(
this
.
_applyEffects
)},
_onDragOver
:
function
(
a
){
if
(
!
B
&&
t
===
this
.
options
.
group
&&
(
void
0
===
a
.
rootEl
||
a
.
rootEl
===
this
.
el
)){
var
b
=
this
.
el
,
d
=
c
(
a
.
target
,
this
.
options
.
draggable
,
b
);
if
(
0
===
b
.
children
.
length
||
b
.
children
[
0
]
===
n
||
b
===
a
.
target
&&
l
(
b
,
a
))
b
.
appendChild
(
m
);
else
if
(
d
&&
d
!==
m
&&
void
0
!==
d
.
parentNode
[
w
]){
q
!==
d
&&
(
q
=
d
,
r
=
h
(
d
),
s
=
d
.
getBoundingClientRect
());
var
e
,
f
=
s
,
g
=
f
.
right
-
f
.
left
,
i
=
f
.
bottom
-
f
.
top
,
j
=
/left|right|inline/
.
test
(
r
.
cssFloat
+
r
.
display
),
o
=
(
j
?(
a
.
clientX
-
f
.
left
)
/
g
:(
a
.
clientY
-
f
.
top
)
/
i
)
>
.
5
,
p
=
d
.
offsetWidth
>
m
.
offsetWidth
,
u
=
d
.
offsetHeight
>
m
.
offsetHeight
,
v
=
d
.
nextSibling
;
B
=!
0
,
setTimeout
(
k
,
30
),
e
=
j
?
d
.
previousElementSibling
===
m
&&!
p
||
o
>
.
5
&&
p
:
d
.
nextElementSibling
!==
m
&&!
u
||
o
>
.
5
&&
u
,
e
&&!
v
?
b
.
appendChild
(
m
):
d
.
parentNode
.
insertBefore
(
m
,
e
?
v
:
d
)}}},
_onDrop
:
function
(
a
){
clearInterval
(
this
.
_loopId
),
f
(
y
,
"
drop
"
,
this
.
_onDrop
),
f
(
y
,
"
dragover
"
,
d
),
f
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
f
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
f
(
this
.
el
,
"
selectstart
"
,
this
.
_onTapStart
),
f
(
y
,
"
touchmove
"
,
this
.
_onTouchMove
),
f
(
y
,
"
touchend
"
,
this
.
_onDrop
),
a
&&
(
a
.
preventDefault
(),
a
.
stopPropagation
(),
n
&&
n
.
parentNode
.
removeChild
(
n
),
m
&&
(
j
(
m
),
g
(
m
,
this
.
options
.
ghostClass
,
!
1
),
o
.
contains
(
m
)?
m
.
nextSibling
!==
p
&&
m
.
dispatchEvent
(
C
(
"
update
"
,
m
)):(
o
.
dispatchEvent
(
C
(
"
remove
"
,
m
)),
m
.
dispatchEvent
(
C
(
"
add
"
,
m
)))),
o
=
m
=
n
=
p
=
u
=
v
=
q
=
r
=
t
=
null
)},
destroy
:
function
(){
var
a
=
this
.
el
,
b
=
this
.
options
;
f
(
a
,
"
add
"
,
b
.
onAdd
),
f
(
a
,
"
update
"
,
b
.
onUpdate
),
f
(
a
,
"
remove
"
,
b
.
onRemove
),
f
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
f
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
f
(
a
,
"
selectstart
"
,
this
.
_onTapStart
),
f
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
f
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
Array
.
prototype
.
forEach
.
call
(
a
.
querySelectorAll
(
"
[draggable]
"
),
function
(
a
){
a
.
removeAttribute
(
"
draggable
"
)}),
F
.
splice
(
F
.
indexOf
(
this
.
_onDragOver
),
1
),
this
.
_onDrop
(),
this
.
el
=
null
}},
a
.
utils
=
{
on
:
e
,
off
:
f
,
css
:
h
,
find
:
i
,
bind
:
b
,
closest
:
c
,
toggleClass
:
g
},
a
.
version
=
"
0.1.9
"
,
a
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录