Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pic-reader
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
龙菲
pic-reader
Commits
e5f127db
提交
e5f127db
authored
6月 23, 2025
作者:
龙菲
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
去除中缝和其他冗余代码
上级
343b9b77
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
549 行增加
和
576 行删除
+549
-576
turn.js
src/assets/js/turn.js
+504
-492
components.d.ts
src/components.d.ts
+2
-0
index.vue
src/components/BookReader/index.vue
+17
-20
index.js
src/router/index.js
+0
-4
index.vue
src/views/detail/index.vue
+2
-1
index.vue
src/views/index/index.vue
+24
-52
index.vue
src/views/test/index.vue
+0
-7
没有找到文件。
src/assets/js/turn.js
浏览文件 @
e5f127db
...
...
@@ -7,7 +7,7 @@
* All rights reserved
**/
(
function
(
$
)
{
(
function
(
$
)
{
'use strict'
;
...
...
@@ -21,7 +21,7 @@
PI
=
Math
.
PI
,
A90
=
PI
/
2
,
A90
=
PI
/
2
,
isTouch
=
'ontouchstart'
in
window
,
...
...
@@ -112,7 +112,7 @@
// Singleton constructor
// $('#selector').turn([options]);
init
:
function
(
options
)
{
init
:
function
(
options
)
{
// Define constants
...
...
@@ -157,7 +157,7 @@
// Set the css
this
.
css
({
position
:
'relative'
,
width
:
options
.
width
,
height
:
options
.
height
});
this
.
css
({
position
:
'relative'
,
width
:
options
.
width
,
height
:
options
.
height
});
// Set the initial display
...
...
@@ -165,7 +165,7 @@
// Set the direction
if
(
options
.
direction
!==
''
)
if
(
options
.
direction
!==
''
)
this
.
turn
(
'direction'
,
options
.
direction
);
// Prevent blue screen problems of switching to hardware acceleration mode
...
...
@@ -176,8 +176,8 @@
// Add pages from the DOM
for
(
i
=
0
;
i
<
ch
.
length
;
i
++
)
{
if
(
$
(
ch
[
i
]).
attr
(
'ignore'
)
!=
'1'
)
{
for
(
i
=
0
;
i
<
ch
.
length
;
i
++
)
{
if
(
$
(
ch
[
i
]).
attr
(
'ignore'
)
!=
'1'
)
{
this
.
turn
(
'addPage'
,
ch
[
i
],
++
pageNum
);
}
}
...
...
@@ -208,13 +208,13 @@
// Adds a page from external data
addPage
:
function
(
element
,
page
)
{
addPage
:
function
(
element
,
page
)
{
var
currentPage
,
className
,
incPages
=
false
,
data
=
this
.
data
(),
lastPage
=
data
.
totalPages
+
1
;
lastPage
=
data
.
totalPages
+
1
;
if
(
data
.
destroying
)
return
false
;
...
...
@@ -226,10 +226,10 @@
if
(
page
)
{
if
(
page
==
lastPage
)
if
(
page
==
lastPage
)
incPages
=
true
;
else
if
(
page
>
lastPage
)
throw
turnError
(
'Page "'
+
page
+
'" cannot be inserted'
);
else
if
(
page
>
lastPage
)
throw
turnError
(
'Page "'
+
page
+
'" cannot be inserted'
);
}
else
{
...
...
@@ -238,10 +238,10 @@
}
if
(
page
>=
1
&&
page
<=
lastPage
)
{
if
(
page
>=
1
&&
page
<=
lastPage
)
{
if
(
data
.
display
==
'double'
)
className
=
(
page
%
2
)
?
' odd'
:
' even'
;
if
(
data
.
display
==
'double'
)
className
=
(
page
%
2
)
?
' odd'
:
' even'
;
else
className
=
''
;
...
...
@@ -259,7 +259,7 @@
// Add element
data
.
pageObjs
[
page
]
=
$
(
element
).
css
({
'float'
:
'left'
}).
css
({
'float'
:
'left'
}).
addClass
(
'page p'
+
page
+
className
);
if
(
!
hasHardPage
()
&&
data
.
pageObjs
[
page
].
hasClass
(
'hard'
))
{
...
...
@@ -278,7 +278,7 @@
// Adds a page
_addPage
:
function
(
page
)
{
_addPage
:
function
(
page
)
{
var
data
=
this
.
data
(),
element
=
data
.
pageObjs
[
page
];
...
...
@@ -290,10 +290,14 @@
// Wrapper
data
.
pageWrap
[
page
]
=
$
(
'<div/>'
,
{
'class'
:
'page-wrapper'
,
{
'class'
:
'page-wrapper'
,
page
:
page
,
css
:
{
position
:
'absolute'
,
overflow
:
'hidden'
}});
css
:
{
position
:
'absolute'
,
overflow
:
'hidden'
}
});
// Append to this flipbook
this
.
append
(
data
.
pageWrap
[
page
]);
...
...
@@ -308,7 +312,7 @@
// Set the size of the page
var
prop
=
turnMethods
.
_pageSize
.
call
(
this
,
page
,
true
);
element
.
css
({
width
:
prop
.
width
,
height
:
prop
.
height
});
element
.
css
({
width
:
prop
.
width
,
height
:
prop
.
height
});
data
.
pageWrap
[
page
].
css
(
prop
);
}
...
...
@@ -335,7 +339,7 @@
// Checks if a page is in memory
hasPage
:
function
(
page
)
{
hasPage
:
function
(
page
)
{
return
has
(
page
,
this
.
data
().
pageObjs
);
...
...
@@ -343,31 +347,31 @@
// Centers the flipbook
center
:
function
(
page
)
{
center
:
function
(
page
)
{
var
data
=
this
.
data
(),
size
=
$
(
this
).
turn
(
'size'
),
left
=
0
;
if
(
!
data
.
noCenter
)
{
if
(
data
.
display
==
'double'
)
{
if
(
data
.
display
==
'double'
)
{
var
view
=
this
.
turn
(
'view'
,
page
||
data
.
tpage
||
data
.
page
);
if
(
data
.
direction
==
'ltr'
)
{
if
(
data
.
direction
==
'ltr'
)
{
if
(
!
view
[
0
])
left
-=
size
.
width
/
4
;
left
-=
size
.
width
/
4
;
else
if
(
!
view
[
1
])
left
+=
size
.
width
/
4
;
left
+=
size
.
width
/
4
;
}
else
{
if
(
!
view
[
0
])
left
+=
size
.
width
/
4
;
left
+=
size
.
width
/
4
;
else
if
(
!
view
[
1
])
left
-=
size
.
width
/
4
;
left
-=
size
.
width
/
4
;
}
}
$
(
this
).
css
({
marginLeft
:
left
});
$
(
this
).
css
({
marginLeft
:
left
});
}
return
this
;
...
...
@@ -386,12 +390,12 @@
'released'
,
'start'
,
'turning'
,
'turned'
,
'zooming'
,
'missing'
];
if
(
trigger
(
'destroying'
,
this
)
==
'prevented'
)
if
(
trigger
(
'destroying'
,
this
)
==
'prevented'
)
return
;
data
.
destroying
=
true
;
$
.
each
(
events
,
function
(
index
,
eventName
)
{
$
.
each
(
events
,
function
(
index
,
eventName
)
{
flipbook
.
unbind
(
eventName
);
});
...
...
@@ -400,7 +404,7 @@
$
(
document
).
unbind
(
mouseEvents
.
move
,
data
.
eventHandlers
.
touchMove
).
unbind
(
mouseEvents
.
up
,
data
.
eventHandlers
.
touchEnd
);
while
(
data
.
totalPages
!==
0
)
{
while
(
data
.
totalPages
!==
0
)
{
this
.
turn
(
'removePage'
,
data
.
totalPages
);
}
...
...
@@ -419,29 +423,29 @@
// Checks if this element is a flipbook
is
:
function
()
{
is
:
function
()
{
return
typeof
(
this
.
data
().
pages
)
==
'object'
;
return
typeof
(
this
.
data
().
pages
)
==
'object'
;
},
// Sets and gets the zoom value
zoom
:
function
(
newZoom
)
{
zoom
:
function
(
newZoom
)
{
var
data
=
this
.
data
();
if
(
typeof
(
newZoom
)
==
'number'
)
{
if
(
typeof
(
newZoom
)
==
'number'
)
{
if
(
newZoom
<
0.001
||
newZoom
>
100
)
throw
turnError
(
newZoom
+
' is not a value for zoom'
);
if
(
newZoom
<
0.001
||
newZoom
>
100
)
throw
turnError
(
newZoom
+
' is not a value for zoom'
);
if
(
trigger
(
'zooming'
,
this
,
[
newZoom
,
data
.
zoom
])
==
'prevented'
)
if
(
trigger
(
'zooming'
,
this
,
[
newZoom
,
data
.
zoom
])
==
'prevented'
)
return
this
;
var
size
=
this
.
turn
(
'size'
),
currentView
=
this
.
turn
(
'view'
),
iz
=
1
/
data
.
zoom
,
iz
=
1
/
data
.
zoom
,
newWidth
=
Math
.
round
(
size
.
width
*
iz
*
newZoom
),
newHeight
=
Math
.
round
(
size
.
height
*
iz
*
newZoom
);
...
...
@@ -459,10 +463,10 @@
turnMethods
.
_updateShadow
.
call
(
this
);
for
(
var
i
=
0
;
i
<
currentView
.
length
;
i
++
)
{
if
(
currentView
[
i
]
&&
data
.
pageZoom
[
currentView
[
i
]]
!=
data
.
zoom
)
{
for
(
var
i
=
0
;
i
<
currentView
.
length
;
i
++
)
{
if
(
currentView
[
i
]
&&
data
.
pageZoom
[
currentView
[
i
]]
!=
data
.
zoom
)
{
this
.
trigger
(
'zoomed'
,[
this
.
trigger
(
'zoomed'
,
[
currentView
[
i
],
currentView
,
data
.
pageZoom
[
currentView
[
i
]],
...
...
@@ -481,12 +485,12 @@
// Gets the size of a page
_pageSize
:
function
(
page
,
position
)
{
_pageSize
:
function
(
page
,
position
)
{
var
data
=
this
.
data
(),
prop
=
{};
if
(
data
.
display
==
'single'
)
{
if
(
data
.
display
==
'single'
)
{
prop
.
width
=
this
.
width
();
prop
.
height
=
this
.
height
();
...
...
@@ -499,7 +503,7 @@
}
else
{
var
pageWidth
=
this
.
width
()
/
2
,
var
pageWidth
=
this
.
width
()
/
2
,
pageHeight
=
this
.
height
();
if
(
data
.
pageObjs
[
page
].
hasClass
(
'own-size'
))
{
...
...
@@ -511,17 +515,17 @@
}
if
(
position
)
{
var
odd
=
page
%
2
;
prop
.
top
=
(
pageHeight
-
prop
.
height
)
/
2
;
var
odd
=
page
%
2
;
prop
.
top
=
(
pageHeight
-
prop
.
height
)
/
2
;
if
(
data
.
direction
==
'ltr'
)
{
if
(
data
.
direction
==
'ltr'
)
{
prop
[(
odd
)
?
'right'
:
'left'
]
=
pageWidth
-
prop
.
width
;
prop
[(
odd
)
?
'right'
:
'left'
]
=
pageWidth
-
prop
.
width
;
prop
[(
odd
)
?
'left'
:
'right'
]
=
'auto'
;
}
else
{
prop
[(
odd
)
?
'left'
:
'right'
]
=
pageWidth
-
prop
.
width
;
prop
[(
odd
)
?
'left'
:
'right'
]
=
pageWidth
-
prop
.
width
;
prop
[(
odd
)
?
'right'
:
'left'
]
=
'auto'
;
}
...
...
@@ -535,20 +539,20 @@
// Prepares the flip effect for a page
_makeFlip
:
function
(
page
)
{
_makeFlip
:
function
(
page
)
{
var
data
=
this
.
data
();
if
(
!
data
.
pages
[
page
]
&&
data
.
pagePlace
[
page
]
==
page
)
{
if
(
!
data
.
pages
[
page
]
&&
data
.
pagePlace
[
page
]
==
page
)
{
var
single
=
data
.
display
==
'single'
,
odd
=
page
%
2
;
var
single
=
data
.
display
==
'single'
,
odd
=
page
%
2
;
data
.
pages
[
page
]
=
data
.
pageObjs
[
page
].
css
(
turnMethods
.
_pageSize
.
call
(
this
,
page
)).
flip
({
page
:
page
,
next
:
(
odd
||
single
)
?
page
+
1
:
page
-
1
,
next
:
(
odd
||
single
)
?
page
+
1
:
page
-
1
,
turn
:
this
}).
flip
(
'disable'
,
data
.
disabled
);
...
...
@@ -565,17 +569,17 @@
// Makes pages within a range
_makeRange
:
function
()
{
_makeRange
:
function
()
{
var
page
,
range
,
data
=
this
.
data
();
if
(
data
.
totalPages
<
1
)
if
(
data
.
totalPages
<
1
)
return
;
range
=
this
.
turn
(
'range'
);
for
(
page
=
range
[
0
];
page
<=
range
[
1
];
page
++
)
for
(
page
=
range
[
0
];
page
<=
range
[
1
];
page
++
)
turnMethods
.
_addPage
.
call
(
this
,
page
);
},
...
...
@@ -589,7 +593,7 @@
// 1 2-3 4-5 6-7 8-9 10-11 12-13
// ** ** -- ** **
range
:
function
(
page
)
{
range
:
function
(
page
)
{
var
remainingPages
,
left
,
right
,
view
,
data
=
this
.
data
();
...
...
@@ -597,51 +601,51 @@
page
=
page
||
data
.
tpage
||
data
.
page
||
1
;
view
=
turnMethods
.
_view
.
call
(
this
,
page
);
if
(
page
<
1
||
page
>
data
.
totalPages
)
throw
turnError
(
'"'
+
page
+
'" is not a valid page'
);
if
(
page
<
1
||
page
>
data
.
totalPages
)
throw
turnError
(
'"'
+
page
+
'" is not a valid page'
);
view
[
1
]
=
view
[
1
]
||
view
[
0
];
if
(
view
[
0
]
>=
1
&&
view
[
1
]
<=
data
.
totalPages
)
{
if
(
view
[
0
]
>=
1
&&
view
[
1
]
<=
data
.
totalPages
)
{
remainingPages
=
Math
.
floor
((
pagesInDOM
-
2
)
/
2
);
remainingPages
=
Math
.
floor
((
pagesInDOM
-
2
)
/
2
);
if
(
data
.
totalPages
-
view
[
1
]
>
view
[
0
])
{
left
=
Math
.
min
(
view
[
0
]
-
1
,
remainingPages
);
right
=
2
*
remainingPages
-
left
;
if
(
data
.
totalPages
-
view
[
1
]
>
view
[
0
])
{
left
=
Math
.
min
(
view
[
0
]
-
1
,
remainingPages
);
right
=
2
*
remainingPages
-
left
;
}
else
{
right
=
Math
.
min
(
data
.
totalPages
-
view
[
1
],
remainingPages
);
left
=
2
*
remainingPages
-
right
;
right
=
Math
.
min
(
data
.
totalPages
-
view
[
1
],
remainingPages
);
left
=
2
*
remainingPages
-
right
;
}
}
else
{
left
=
pagesInDOM
-
1
;
right
=
pagesInDOM
-
1
;
left
=
pagesInDOM
-
1
;
right
=
pagesInDOM
-
1
;
}
return
[
Math
.
max
(
1
,
view
[
0
]
-
left
),
Math
.
min
(
data
.
totalPages
,
view
[
1
]
+
right
)];
return
[
Math
.
max
(
1
,
view
[
0
]
-
left
),
Math
.
min
(
data
.
totalPages
,
view
[
1
]
+
right
)];
},
// Detects if a page is within the range of `pagesInDOM` from the current view
_necessPage
:
function
(
page
)
{
_necessPage
:
function
(
page
)
{
if
(
page
===
0
)
if
(
page
===
0
)
return
true
;
var
range
=
this
.
turn
(
'range'
);
return
this
.
data
().
pageObjs
[
page
].
hasClass
(
'fixed'
)
||
(
page
>=
range
[
0
]
&&
page
<=
range
[
1
]);
(
page
>=
range
[
0
]
&&
page
<=
range
[
1
]);
},
// Releases memory by removing pages from the DOM
_removeFromDOM
:
function
()
{
_removeFromDOM
:
function
()
{
var
page
,
data
=
this
.
data
();
...
...
@@ -654,7 +658,7 @@
// Removes a page from DOM and its internal references
_removePageFromDOM
:
function
(
page
)
{
_removePageFromDOM
:
function
(
page
)
{
var
data
=
this
.
data
();
...
...
@@ -688,21 +692,21 @@
// Removes a page
removePage
:
function
(
page
)
{
removePage
:
function
(
page
)
{
var
data
=
this
.
data
();
// Delete all the pages
if
(
page
==
'*'
)
{
if
(
page
==
'*'
)
{
while
(
data
.
totalPages
!==
0
)
{
while
(
data
.
totalPages
!==
0
)
{
this
.
turn
(
'removePage'
,
data
.
totalPages
);
}
}
else
{
if
(
page
<
1
||
page
>
data
.
totalPages
)
throw
turnError
(
'The page '
+
page
+
' doesn
\'
t exist'
);
if
(
page
<
1
||
page
>
data
.
totalPages
)
throw
turnError
(
'The page '
+
page
+
' doesn
\'
t exist'
);
if
(
data
.
pageObjs
[
page
])
{
...
...
@@ -720,11 +724,11 @@
turnMethods
.
_movePages
.
call
(
this
,
page
,
-
1
);
// Resize the size of this flipbook
data
.
totalPages
=
data
.
totalPages
-
1
;
data
.
totalPages
=
data
.
totalPages
-
1
;
// Check the current view
if
(
data
.
page
>
data
.
totalPages
)
{
if
(
data
.
page
>
data
.
totalPages
)
{
data
.
page
=
null
;
turnMethods
.
_fitPage
.
call
(
this
,
data
.
totalPages
);
...
...
@@ -743,16 +747,16 @@
// Moves pages
_movePages
:
function
(
from
,
change
)
{
_movePages
:
function
(
from
,
change
)
{
var
page
,
that
=
this
,
data
=
this
.
data
(),
single
=
data
.
display
==
'single'
,
move
=
function
(
page
)
{
single
=
data
.
display
==
'single'
,
move
=
function
(
page
)
{
var
next
=
page
+
change
,
odd
=
next
%
2
,
odd
=
next
%
2
,
className
=
(
odd
)
?
' odd '
:
' even '
;
if
(
data
.
pageObjs
[
page
])
...
...
@@ -776,7 +780,7 @@
data
.
pages
[
next
]
=
data
.
pages
[
page
].
flip
(
'options'
,
{
page
:
next
,
next
:
(
single
||
odd
)
?
next
+
1
:
next
-
1
next
:
(
single
||
odd
)
?
next
+
1
:
next
-
1
});
if
(
change
)
{
...
...
@@ -791,43 +795,43 @@
};
if
(
change
>
0
)
for
(
page
=
data
.
totalPages
;
page
>=
from
;
page
--
)
if
(
change
>
0
)
for
(
page
=
data
.
totalPages
;
page
>=
from
;
page
--
)
move
(
page
);
else
for
(
page
=
from
;
page
<=
data
.
totalPages
;
page
++
)
for
(
page
=
from
;
page
<=
data
.
totalPages
;
page
++
)
move
(
page
);
},
// Sets or Gets the display mode
display
:
function
(
display
)
{
display
:
function
(
display
)
{
var
data
=
this
.
data
(),
currentDisplay
=
data
.
display
;
if
(
display
===
undefined
)
{
if
(
display
===
undefined
)
{
return
currentDisplay
;
}
else
{
if
(
$
.
inArray
(
display
,
displays
)
==
-
1
)
throw
turnError
(
'"'
+
display
+
'" is not a value for display'
);
if
(
$
.
inArray
(
display
,
displays
)
==
-
1
)
throw
turnError
(
'"'
+
display
+
'" is not a value for display'
);
switch
(
display
)
{
switch
(
display
)
{
case
'single'
:
// Create a temporal page to use as folded page
if
(
!
data
.
pageObjs
[
0
])
{
this
.
turn
(
'stop'
).
css
({
'overflow'
:
'hidden'
});
css
({
'overflow'
:
'hidden'
});
data
.
pageObjs
[
0
]
=
$
(
'<div />'
,
{
'class'
:
'page p-temporal'
}).
css
({
width
:
this
.
width
(),
height
:
this
.
height
()
}).
{
'class'
:
'page p-temporal'
}).
css
({
width
:
this
.
width
(),
height
:
this
.
height
()
}).
appendTo
(
this
);
}
...
...
@@ -839,7 +843,7 @@
// Remove the temporal page
if
(
data
.
pageObjs
[
0
])
{
this
.
turn
(
'stop'
).
css
({
'overflow'
:
''
});
this
.
turn
(
'stop'
).
css
({
'overflow'
:
''
});
data
.
pageObjs
[
0
].
remove
();
delete
data
.
pageObjs
[
0
];
}
...
...
@@ -867,11 +871,11 @@
// Gets and sets the direction of the flipbook
direction
:
function
(
dir
)
{
direction
:
function
(
dir
)
{
var
data
=
this
.
data
();
if
(
dir
===
undefined
)
{
if
(
dir
===
undefined
)
{
return
data
.
direction
;
...
...
@@ -879,12 +883,12 @@
dir
=
dir
.
toLowerCase
();
if
(
$
.
inArray
(
dir
,
directions
)
==
-
1
)
if
(
$
.
inArray
(
dir
,
directions
)
==
-
1
)
throw
turnError
(
'"'
+
dir
+
'" is not a value for direction'
);
if
(
dir
==
'rtl'
)
{
if
(
dir
==
'rtl'
)
{
$
(
this
).
attr
(
'dir'
,
'ltr'
).
css
({
direction
:
'ltr'
});
css
({
direction
:
'ltr'
});
}
data
.
direction
=
dir
;
...
...
@@ -899,15 +903,15 @@
// Detects animation
animating
:
function
()
{
animating
:
function
()
{
return
this
.
data
().
pageMv
.
length
>
0
;
return
this
.
data
().
pageMv
.
length
>
0
;
},
// Gets the current activated corner
corner
:
function
()
{
corner
:
function
()
{
var
corner
,
page
,
...
...
@@ -925,7 +929,7 @@
// Gets the data stored in the flipbook
data
:
function
()
{
data
:
function
()
{
return
this
.
data
();
...
...
@@ -933,18 +937,18 @@
// Disables and enables the effect
disable
:
function
(
disable
)
{
disable
:
function
(
disable
)
{
var
page
,
data
=
this
.
data
(),
view
=
this
.
turn
(
'view'
);
data
.
disabled
=
disable
===
undefined
||
disable
===
true
;
data
.
disabled
=
disable
===
undefined
||
disable
===
true
;
for
(
page
in
data
.
pages
)
{
if
(
has
(
page
,
data
.
pages
))
data
.
pages
[
page
].
flip
(
'disable'
,
(
data
.
disabled
)
?
true
:
$
.
inArray
(
parseInt
(
page
,
10
),
view
)
==
-
1
);
(
data
.
disabled
)
?
true
:
$
.
inArray
(
parseInt
(
page
,
10
),
view
)
==
-
1
);
}
return
this
;
...
...
@@ -953,10 +957,10 @@
// Disables and enables the effect
disabled
:
function
(
disable
)
{
disabled
:
function
(
disable
)
{
if
(
disable
===
undefined
)
{
return
this
.
data
().
disabled
===
true
;
if
(
disable
===
undefined
)
{
return
this
.
data
().
disabled
===
true
;
}
else
{
return
this
.
turn
(
'disable'
,
disable
);
}
...
...
@@ -965,11 +969,11 @@
// Gets and sets the size
size
:
function
(
width
,
height
)
{
size
:
function
(
width
,
height
)
{
if
(
width
===
undefined
||
height
===
undefined
)
{
if
(
width
===
undefined
||
height
===
undefined
)
{
return
{
width
:
this
.
width
(),
height
:
this
.
height
()
};
return
{
width
:
this
.
width
(),
height
:
this
.
height
()
};
}
else
{
...
...
@@ -977,23 +981,23 @@
var
page
,
prop
,
data
=
this
.
data
(),
pageWidth
=
(
data
.
display
==
'double'
)
?
width
/
2
:
width
;
pageWidth
=
(
data
.
display
==
'double'
)
?
width
/
2
:
width
;
this
.
css
({
width
:
width
,
height
:
height
});
this
.
css
({
width
:
width
,
height
:
height
});
if
(
data
.
pageObjs
[
0
])
data
.
pageObjs
[
0
].
css
({
width
:
pageWidth
,
height
:
height
});
data
.
pageObjs
[
0
].
css
({
width
:
pageWidth
,
height
:
height
});
for
(
page
in
data
.
pageWrap
)
{
if
(
!
has
(
page
,
data
.
pageWrap
))
continue
;
prop
=
turnMethods
.
_pageSize
.
call
(
this
,
page
,
true
);
data
.
pageObjs
[
page
].
css
({
width
:
prop
.
width
,
height
:
prop
.
height
});
data
.
pageObjs
[
page
].
css
({
width
:
prop
.
width
,
height
:
prop
.
height
});
data
.
pageWrap
[
page
].
css
(
prop
);
if
(
data
.
pages
[
page
])
data
.
pages
[
page
].
css
({
width
:
prop
.
width
,
height
:
prop
.
height
});
data
.
pages
[
page
].
css
({
width
:
prop
.
width
,
height
:
prop
.
height
});
}
this
.
turn
(
'resize'
);
...
...
@@ -1005,12 +1009,12 @@
// Resizes each page
resize
:
function
()
{
resize
:
function
()
{
var
page
,
data
=
this
.
data
();
if
(
data
.
pages
[
0
])
{
data
.
pageWrap
[
0
].
css
({
left
:
-
this
.
width
()
});
data
.
pageWrap
[
0
].
css
({
left
:
-
this
.
width
()
});
data
.
pages
[
0
].
flip
(
'resize'
,
true
);
}
...
...
@@ -1027,12 +1031,12 @@
// Removes an animation from the cache
_removeMv
:
function
(
page
)
{
_removeMv
:
function
(
page
)
{
var
i
,
data
=
this
.
data
();
for
(
i
=
0
;
i
<
data
.
pageMv
.
length
;
i
++
)
if
(
data
.
pageMv
[
i
]
==
page
)
{
for
(
i
=
0
;
i
<
data
.
pageMv
.
length
;
i
++
)
if
(
data
.
pageMv
[
i
]
==
page
)
{
data
.
pageMv
.
splice
(
i
,
1
);
return
true
;
}
...
...
@@ -1043,7 +1047,7 @@
// Adds an animation to the cache
_addMv
:
function
(
page
)
{
_addMv
:
function
(
page
)
{
var
data
=
this
.
data
();
...
...
@@ -1054,14 +1058,14 @@
// Gets indexes for a view
_view
:
function
(
page
)
{
_view
:
function
(
page
)
{
var
data
=
this
.
data
();
page
=
page
||
data
.
page
;
if
(
data
.
display
==
'double'
)
return
(
page
%
2
)
?
[
page
-
1
,
page
]
:
[
page
,
page
+
1
];
if
(
data
.
display
==
'double'
)
return
(
page
%
2
)
?
[
page
-
1
,
page
]
:
[
page
,
page
+
1
];
else
return
[
page
];
...
...
@@ -1069,22 +1073,22 @@
// Gets a view
view
:
function
(
page
)
{
view
:
function
(
page
)
{
var
data
=
this
.
data
(),
view
=
turnMethods
.
_view
.
call
(
this
,
page
);
if
(
data
.
display
==
'double'
)
return
[(
view
[
0
]
>
0
)
?
view
[
0
]
:
0
,
(
view
[
1
]
<=
data
.
totalPages
)
?
view
[
1
]
:
0
];
if
(
data
.
display
==
'double'
)
return
[(
view
[
0
]
>
0
)
?
view
[
0
]
:
0
,
(
view
[
1
]
<=
data
.
totalPages
)
?
view
[
1
]
:
0
];
else
return
[(
view
[
0
]
>
0
&&
view
[
0
]
<=
data
.
totalPages
)
?
view
[
0
]
:
0
];
return
[(
view
[
0
]
>
0
&&
view
[
0
]
<=
data
.
totalPages
)
?
view
[
0
]
:
0
];
},
// Stops animations
stop
:
function
(
ignore
,
animate
)
{
stop
:
function
(
ignore
,
animate
)
{
if
(
this
.
turn
(
'animating'
))
{
...
...
@@ -1096,9 +1100,9 @@
delete
data
[
'tpage'
];
}
for
(
i
=
0
;
i
<
data
.
pageMv
.
length
;
i
++
)
{
for
(
i
=
0
;
i
<
data
.
pageMv
.
length
;
i
++
)
{
if
(
!
data
.
pageMv
[
i
]
||
data
.
pageMv
[
i
]
===
ignore
)
if
(
!
data
.
pageMv
[
i
]
||
data
.
pageMv
[
i
]
===
ignore
)
continue
;
page
=
data
.
pages
[
data
.
pageMv
[
i
]];
...
...
@@ -1110,7 +1114,7 @@
flipMethods
.
_moveFoldingPage
.
call
(
page
,
false
);
if
(
opts
.
force
)
{
opts
.
next
=
(
opts
.
page
%
2
===
0
)
?
opts
.
page
-
1
:
opts
.
page
+
1
;
opts
.
next
=
(
opts
.
page
%
2
===
0
)
?
opts
.
page
-
1
:
opts
.
page
+
1
;
delete
opts
[
'force'
];
}
...
...
@@ -1124,15 +1128,15 @@
// Gets and sets the number of pages
pages
:
function
(
pages
)
{
pages
:
function
(
pages
)
{
var
data
=
this
.
data
();
if
(
pages
)
{
if
(
pages
<
data
.
totalPages
)
{
if
(
pages
<
data
.
totalPages
)
{
for
(
var
page
=
data
.
totalPages
;
page
>
pages
;
page
--
)
for
(
var
page
=
data
.
totalPages
;
page
>
pages
;
page
--
)
this
.
turn
(
'removePage'
,
page
);
}
...
...
@@ -1149,30 +1153,30 @@
// Checks missing pages
_missing
:
function
(
page
)
{
_missing
:
function
(
page
)
{
var
data
=
this
.
data
();
if
(
data
.
totalPages
<
1
)
if
(
data
.
totalPages
<
1
)
return
;
var
p
,
range
=
this
.
turn
(
'range'
,
page
),
missing
=
[];
for
(
p
=
range
[
0
];
p
<=
range
[
1
];
p
++
)
{
for
(
p
=
range
[
0
];
p
<=
range
[
1
];
p
++
)
{
if
(
!
data
.
pageObjs
[
p
])
missing
.
push
(
p
);
}
if
(
missing
.
length
>
0
)
if
(
missing
.
length
>
0
)
this
.
trigger
(
'missing'
,
[
missing
]);
},
// Sets a page without effect
_fitPage
:
function
(
page
)
{
_fitPage
:
function
(
page
)
{
var
data
=
this
.
data
(),
newView
=
this
.
turn
(
'view'
,
page
);
...
...
@@ -1186,11 +1190,11 @@
this
.
turn
(
'stop'
);
for
(
var
i
=
0
;
i
<
newView
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
newView
.
length
;
i
++
)
{
if
(
newView
[
i
]
&&
data
.
pageZoom
[
newView
[
i
]]
!=
data
.
zoom
)
{
if
(
newView
[
i
]
&&
data
.
pageZoom
[
newView
[
i
]]
!=
data
.
zoom
)
{
this
.
trigger
(
'zoomed'
,[
this
.
trigger
(
'zoomed'
,
[
newView
[
i
],
newView
,
data
.
pageZoom
[
newView
[
i
]],
...
...
@@ -1214,7 +1218,7 @@
// Turns the page
_turnPage
:
function
(
page
)
{
_turnPage
:
function
(
page
)
{
var
current
,
next
,
...
...
@@ -1224,33 +1228,33 @@
newView
=
this
.
turn
(
'view'
,
page
);
if
(
data
.
page
!=
page
)
{
if
(
data
.
page
!=
page
)
{
var
currentPage
=
data
.
page
;
if
(
trigger
(
'turning'
,
this
,
[
page
,
newView
])
==
'prevented'
)
{
if
(
trigger
(
'turning'
,
this
,
[
page
,
newView
])
==
'prevented'
)
{
if
(
currentPage
==
data
.
page
&&
$
.
inArray
(
place
,
data
.
pageMv
)
!=
-
1
)
if
(
currentPage
==
data
.
page
&&
$
.
inArray
(
place
,
data
.
pageMv
)
!=
-
1
)
data
.
pages
[
place
].
flip
(
'hideFoldedPage'
,
true
);
return
;
}
if
(
$
.
inArray
(
1
,
newView
)
!=
-
1
)
if
(
$
.
inArray
(
1
,
newView
)
!=
-
1
)
this
.
trigger
(
'first'
);
if
(
$
.
inArray
(
data
.
totalPages
,
newView
)
!=
-
1
)
if
(
$
.
inArray
(
data
.
totalPages
,
newView
)
!=
-
1
)
this
.
trigger
(
'last'
);
}
if
(
data
.
display
==
'single'
)
{
if
(
data
.
display
==
'single'
)
{
current
=
view
[
0
];
next
=
newView
[
0
];
}
else
if
(
view
[
1
]
&&
page
>
view
[
1
])
{
}
else
if
(
view
[
1
]
&&
page
>
view
[
1
])
{
current
=
view
[
1
];
next
=
newView
[
0
];
}
else
if
(
view
[
0
]
&&
page
<
view
[
0
])
{
}
else
if
(
view
[
0
]
&&
page
<
view
[
0
])
{
current
=
view
[
0
];
next
=
newView
[
1
];
}
...
...
@@ -1273,7 +1277,7 @@
data
.
tpage
=
next
;
if
(
opts
.
next
!=
next
)
{
if
(
opts
.
next
!=
next
)
{
opts
.
next
=
next
;
opts
.
force
=
true
;
}
...
...
@@ -1282,31 +1286,31 @@
flipData
.
point
=
actualPoint
;
if
(
flipData
.
effect
==
'hard'
)
if
(
data
.
direction
==
'ltr'
)
if
(
flipData
.
effect
==
'hard'
)
if
(
data
.
direction
==
'ltr'
)
data
.
pages
[
current
].
flip
(
'turnPage'
,
(
page
>
current
)
?
'r'
:
'l'
);
(
page
>
current
)
?
'r'
:
'l'
);
else
data
.
pages
[
current
].
flip
(
'turnPage'
,
(
page
>
current
)
?
'l'
:
'r'
);
(
page
>
current
)
?
'l'
:
'r'
);
else
{
if
(
data
.
direction
==
'ltr'
)
if
(
data
.
direction
==
'ltr'
)
data
.
pages
[
current
].
flip
(
'turnPage'
,
optsCorners
[(
page
>
current
)
?
1
:
0
]);
optsCorners
[(
page
>
current
)
?
1
:
0
]);
else
data
.
pages
[
current
].
flip
(
'turnPage'
,
optsCorners
[(
page
>
current
)
?
0
:
1
]);
optsCorners
[(
page
>
current
)
?
0
:
1
]);
}
},
// Gets and sets a page
page
:
function
(
page
)
{
page
:
function
(
page
)
{
var
data
=
this
.
data
();
if
(
page
===
undefined
)
{
if
(
page
===
undefined
)
{
return
data
.
page
;
...
...
@@ -1316,10 +1320,10 @@
page
=
parseInt
(
page
,
10
);
if
(
page
>
0
&&
page
<=
data
.
totalPages
)
{
if
(
page
>
0
&&
page
<=
data
.
totalPages
)
{
if
(
page
!=
data
.
page
)
{
if
(
!
data
.
done
||
$
.
inArray
(
page
,
this
.
turn
(
'view'
))
!=
-
1
)
if
(
page
!=
data
.
page
)
{
if
(
!
data
.
done
||
$
.
inArray
(
page
,
this
.
turn
(
'view'
))
!=
-
1
)
turnMethods
.
_fitPage
.
call
(
this
,
page
);
else
turnMethods
.
_turnPage
.
call
(
this
,
page
);
...
...
@@ -1341,7 +1345,7 @@
// Turns to the next view
next
:
function
()
{
next
:
function
()
{
return
this
.
turn
(
'page'
,
Math
.
min
(
this
.
data
().
totalPages
,
turnMethods
.
_view
.
call
(
this
,
this
.
data
().
page
).
pop
()
+
1
));
...
...
@@ -1350,7 +1354,7 @@
// Turns to the previous view
previous
:
function
()
{
previous
:
function
()
{
return
this
.
turn
(
'page'
,
Math
.
max
(
1
,
turnMethods
.
_view
.
call
(
this
,
this
.
data
().
page
).
shift
()
-
1
));
...
...
@@ -1359,20 +1363,20 @@
// Shows a peeling corner
peel
:
function
(
corner
,
animate
)
{
peel
:
function
(
corner
,
animate
)
{
var
data
=
this
.
data
(),
view
=
this
.
turn
(
'view'
);
animate
=
(
animate
===
undefined
)
?
true
:
animate
===
true
;
animate
=
(
animate
===
undefined
)
?
true
:
animate
===
true
;
if
(
corner
===
false
)
{
if
(
corner
===
false
)
{
this
.
turn
(
'stop'
,
null
,
animate
);
}
else
{
if
(
data
.
display
==
'single'
)
{
if
(
data
.
display
==
'single'
)
{
data
.
pages
[
data
.
page
].
flip
(
'peel'
,
corner
,
animate
);
...
...
@@ -1380,13 +1384,13 @@
var
page
;
if
(
data
.
direction
==
'ltr'
)
{
if
(
data
.
direction
==
'ltr'
)
{
page
=
(
corner
.
indexOf
(
'l'
)
!=
-
1
)
?
view
[
0
]
:
view
[
1
];
page
=
(
corner
.
indexOf
(
'l'
)
!=
-
1
)
?
view
[
0
]
:
view
[
1
];
}
else
{
page
=
(
corner
.
indexOf
(
'l'
)
!=
-
1
)
?
view
[
1
]
:
view
[
0
];
page
=
(
corner
.
indexOf
(
'l'
)
!=
-
1
)
?
view
[
1
]
:
view
[
0
];
}
...
...
@@ -1403,7 +1407,7 @@
// Adds a motion to the internal list
// This event is called in context of flip
_addMotionPage
:
function
()
{
_addMotionPage
:
function
()
{
var
opts
=
$
(
this
).
data
().
f
.
opts
,
turn
=
opts
.
turn
,
...
...
@@ -1415,7 +1419,7 @@
// This event is called in context of flip
_eventStart
:
function
(
e
,
opts
,
corner
)
{
_eventStart
:
function
(
e
,
opts
,
corner
)
{
var
data
=
opts
.
turn
.
data
(),
actualZoom
=
data
.
pageZoom
[
opts
.
page
];
...
...
@@ -1425,9 +1429,9 @@
return
;
}
if
(
actualZoom
&&
actualZoom
!=
data
.
zoom
)
{
if
(
actualZoom
&&
actualZoom
!=
data
.
zoom
)
{
opts
.
turn
.
trigger
(
'zoomed'
,[
opts
.
turn
.
trigger
(
'zoomed'
,
[
opts
.
page
,
opts
.
turn
.
turn
(
'view'
,
opts
.
page
),
actualZoom
,
...
...
@@ -1437,18 +1441,17 @@
}
if
(
data
.
display
==
'single'
&&
corner
)
{
if
(
data
.
display
==
'single'
&&
corner
)
{
if
((
corner
.
charAt
(
1
)
==
'l'
&&
data
.
direction
==
'ltr'
)
||
(
corner
.
charAt
(
1
)
==
'r'
&&
data
.
direction
==
'rtl'
))
{
if
((
corner
.
charAt
(
1
)
==
'l'
&&
data
.
direction
==
'ltr'
)
||
(
corner
.
charAt
(
1
)
==
'r'
&&
data
.
direction
==
'rtl'
))
{
opts
.
next
=
(
opts
.
next
<
opts
.
page
)
?
opts
.
next
:
opts
.
page
-
1
;
opts
.
next
=
(
opts
.
next
<
opts
.
page
)
?
opts
.
next
:
opts
.
page
-
1
;
opts
.
force
=
true
;
}
else
{
opts
.
next
=
(
opts
.
next
>
opts
.
page
)
?
opts
.
next
:
opts
.
page
+
1
;
opts
.
next
=
(
opts
.
next
>
opts
.
page
)
?
opts
.
next
:
opts
.
page
+
1
;
}
...
...
@@ -1460,7 +1463,7 @@
// This event is called in context of flip
_eventEnd
:
function
(
e
,
opts
,
turned
)
{
_eventEnd
:
function
(
e
,
opts
,
turned
)
{
var
that
=
$
(
e
.
target
),
data
=
that
.
data
().
f
,
...
...
@@ -1471,7 +1474,7 @@
var
tpage
=
dd
.
tpage
||
dd
.
page
;
if
(
tpage
==
opts
.
next
||
tpage
==
opts
.
page
)
{
if
(
tpage
==
opts
.
next
||
tpage
==
opts
.
page
)
{
delete
dd
.
tpage
;
turnMethods
.
_fitPage
.
call
(
turn
,
tpage
||
opts
.
next
,
true
);
...
...
@@ -1489,7 +1492,7 @@
// This event is called in context of flip
_eventPressed
:
function
(
e
)
{
_eventPressed
:
function
(
e
)
{
var
page
,
data
=
$
(
e
.
target
).
data
().
f
,
...
...
@@ -1507,7 +1510,7 @@
// This event is called in context of flip
_eventReleased
:
function
(
e
,
point
)
{
_eventReleased
:
function
(
e
,
point
)
{
var
outArea
,
page
=
$
(
e
.
target
),
...
...
@@ -1515,15 +1518,15 @@
turn
=
data
.
opts
.
turn
,
turnData
=
turn
.
data
();
if
(
turnData
.
display
==
'single'
)
{
outArea
=
(
point
.
corner
==
'br'
||
point
.
corner
==
'tr'
)
?
point
.
x
<
page
.
width
()
/
2
:
point
.
x
>
page
.
width
()
/
2
;
if
(
turnData
.
display
==
'single'
)
{
outArea
=
(
point
.
corner
==
'br'
||
point
.
corner
==
'tr'
)
?
point
.
x
<
page
.
width
()
/
2
:
point
.
x
>
page
.
width
()
/
2
;
}
else
{
outArea
=
point
.
x
<
0
||
point
.
x
>
page
.
width
();
outArea
=
point
.
x
<
0
||
point
.
x
>
page
.
width
();
}
if
((
new
Date
()).
getTime
()
-
data
.
time
<
200
||
outArea
)
{
if
((
new
Date
()).
getTime
()
-
data
.
time
<
200
||
outArea
)
{
e
.
preventDefault
();
turnMethods
.
_turnPage
.
call
(
turn
,
data
.
opts
.
next
);
...
...
@@ -1536,7 +1539,7 @@
// This event is called in context of flip
_flip
:
function
(
e
)
{
_flip
:
function
(
e
)
{
e
.
stopPropagation
();
...
...
@@ -1551,18 +1554,18 @@
},
//
_touchStart
:
function
()
{
_touchStart
:
function
()
{
var
data
=
this
.
data
();
for
(
var
page
in
data
.
pages
)
{
if
(
has
(
page
,
data
.
pages
)
&&
flipMethods
.
_eventStart
.
apply
(
data
.
pages
[
page
],
arguments
)
===
false
)
{
flipMethods
.
_eventStart
.
apply
(
data
.
pages
[
page
],
arguments
)
===
false
)
{
return
false
;
}
}
},
//
_touchMove
:
function
()
{
_touchMove
:
function
()
{
var
data
=
this
.
data
();
for
(
var
page
in
data
.
pages
)
{
if
(
has
(
page
,
data
.
pages
))
{
...
...
@@ -1572,7 +1575,7 @@
},
//
_touchEnd
:
function
()
{
_touchEnd
:
function
()
{
var
data
=
this
.
data
();
for
(
var
page
in
data
.
pages
)
{
if
(
has
(
page
,
data
.
pages
))
{
...
...
@@ -1583,31 +1586,31 @@
// Calculate the z-index value for pages during the animation
calculateZ
:
function
(
mv
)
{
calculateZ
:
function
(
mv
)
{
var
i
,
page
,
nextPage
,
placePage
,
dpage
,
that
=
this
,
data
=
this
.
data
(),
view
=
this
.
turn
(
'view'
),
currentPage
=
view
[
0
]
||
view
[
1
],
total
=
mv
.
length
-
1
,
r
=
{
pageZ
:
{},
partZ
:
{},
pageV
:
{}
},
total
=
mv
.
length
-
1
,
r
=
{
pageZ
:
{},
partZ
:
{},
pageV
:
{}
},
addView
=
function
(
page
)
{
addView
=
function
(
page
)
{
var
view
=
that
.
turn
(
'view'
,
page
);
if
(
view
[
0
])
r
.
pageV
[
view
[
0
]]
=
true
;
if
(
view
[
1
])
r
.
pageV
[
view
[
1
]]
=
true
;
};
for
(
i
=
0
;
i
<=
total
;
i
++
)
{
for
(
i
=
0
;
i
<=
total
;
i
++
)
{
page
=
mv
[
i
];
nextPage
=
data
.
pages
[
page
].
data
().
f
.
opts
.
next
;
placePage
=
data
.
pagePlace
[
page
];
addView
(
page
);
addView
(
nextPage
);
dpage
=
(
data
.
pagePlace
[
nextPage
]
==
nextPage
)
?
nextPage
:
page
;
r
.
pageZ
[
dpage
]
=
data
.
totalPages
-
Math
.
abs
(
currentPage
-
dpage
);
r
.
partZ
[
placePage
]
=
data
.
totalPages
*
2
-
total
+
i
;
dpage
=
(
data
.
pagePlace
[
nextPage
]
==
nextPage
)
?
nextPage
:
page
;
r
.
pageZ
[
dpage
]
=
data
.
totalPages
-
Math
.
abs
(
currentPage
-
dpage
);
r
.
partZ
[
placePage
]
=
data
.
totalPages
*
2
-
total
+
i
;
}
return
r
;
...
...
@@ -1615,12 +1618,12 @@
// Updates the z-index and display property of every page
update
:
function
()
{
update
:
function
()
{
var
page
,
data
=
this
.
data
();
if
(
this
.
turn
(
'animating'
)
&&
data
.
pageMv
[
0
]
!==
0
)
{
if
(
this
.
turn
(
'animating'
)
&&
data
.
pageMv
[
0
]
!==
0
)
{
// Update motion
...
...
@@ -1658,14 +1661,14 @@
p
.
flip
(
'hover'
,
false
).
flip
(
'disable'
,
$
.
inArray
(
parseInt
(
page
,
10
),
data
.
pageMv
)
==
-
1
&&
page
!=
newView
[
0
]
&&
page
!=
newView
[
1
]);
$
.
inArray
(
parseInt
(
page
,
10
),
data
.
pageMv
)
==
-
1
&&
page
!=
newView
[
0
]
&&
page
!=
newView
[
1
]);
}
else
{
p
.
flip
(
'hover'
,
corner
===
false
).
flip
(
'disable'
,
page
!=
actualView
[
0
]
&&
page
!=
actualView
[
1
]);
p
.
flip
(
'hover'
,
corner
===
false
).
flip
(
'disable'
,
page
!=
actualView
[
0
]
&&
page
!=
actualView
[
1
]);
}
...
...
@@ -1686,7 +1689,7 @@
if
(
data
.
pages
[
page
])
{
data
.
pages
[
page
].
flip
(
'disable'
,
data
.
disabled
||
pageLocation
!=
1
).
flip
(
'disable'
,
data
.
disabled
||
pageLocation
!=
1
).
flip
(
'hover'
,
true
).
flip
(
'z'
,
null
);
}
...
...
@@ -1698,13 +1701,13 @@
// Updates the position and size of the flipbook's shadow
_updateShadow
:
function
()
{
_updateShadow
:
function
()
{
var
view
,
view2
,
shadow
,
data
=
this
.
data
(),
width
=
this
.
width
(),
height
=
this
.
height
(),
pageWidth
=
(
data
.
display
==
'single'
)
?
width
:
width
/
2
;
pageWidth
=
(
data
.
display
==
'single'
)
?
width
:
width
/
2
;
view
=
this
.
turn
(
'view'
);
...
...
@@ -1716,7 +1719,7 @@
appendTo
(
this
);
}
for
(
var
i
=
0
;
i
<
data
.
pageMv
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
data
.
pageMv
.
length
;
i
++
)
{
if
(
!
view
[
0
]
||
!
view
[
1
])
break
;
...
...
@@ -1727,8 +1730,8 @@
view
[
1
]
=
view
[
1
]
&&
view2
[
1
];
}
if
(
!
view
[
0
])
shadow
=
(
data
.
direction
==
'ltr'
)
?
1
:
2
;
else
if
(
!
view
[
1
])
shadow
=
(
data
.
direction
==
'ltr'
)
?
2
:
1
;
if
(
!
view
[
0
])
shadow
=
(
data
.
direction
==
'ltr'
)
?
1
:
2
;
else
if
(
!
view
[
1
])
shadow
=
(
data
.
direction
==
'ltr'
)
?
2
:
1
;
else
shadow
=
3
;
switch
(
shadow
)
{
...
...
@@ -1763,18 +1766,18 @@
// Sets the z-index and display property of a page
// It depends on the current view
_setPageLoc
:
function
(
page
)
{
_setPageLoc
:
function
(
page
)
{
var
data
=
this
.
data
(),
view
=
this
.
turn
(
'view'
),
loc
=
0
;
if
(
page
==
view
[
0
]
||
page
==
view
[
1
])
if
(
page
==
view
[
0
]
||
page
==
view
[
1
])
loc
=
1
;
else
if
(
(
data
.
display
==
'single'
&&
page
==
view
[
0
]
+
1
)
||
(
data
.
display
==
'double'
&&
page
==
view
[
0
]
-
2
||
page
==
view
[
1
]
+
2
)
(
data
.
display
==
'single'
&&
page
==
view
[
0
]
+
1
)
||
(
data
.
display
==
'double'
&&
page
==
view
[
0
]
-
2
||
page
==
view
[
1
]
+
2
)
)
loc
=
2
;
...
...
@@ -1790,7 +1793,7 @@
case
2
:
data
.
pageWrap
[
page
].
css
(
{
zIndex
:
data
.
totalPages
-
1
,
zIndex
:
data
.
totalPages
-
1
,
display
:
''
});
break
;
...
...
@@ -1798,7 +1801,8 @@
data
.
pageWrap
[
page
].
css
(
{
zIndex
:
0
,
display
:
(
data
.
pageObjs
[
page
].
hasClass
(
'fixed'
))
?
''
:
'none'
}
display
:
(
data
.
pageObjs
[
page
].
hasClass
(
'fixed'
))
?
''
:
'none'
}
);
break
;
}
...
...
@@ -1808,9 +1812,9 @@
// Gets and sets the options
options
:
function
(
options
)
{
options
:
function
(
options
)
{
if
(
options
===
undefined
)
{
if
(
options
===
undefined
)
{
return
this
.
data
().
opts
;
...
...
@@ -1863,7 +1867,7 @@
// Gets the current version
version
:
function
()
{
version
:
function
()
{
return
version
;
...
...
@@ -1876,13 +1880,15 @@
// Constructor
init
:
function
(
opts
)
{
init
:
function
(
opts
)
{
this
.
data
({
f
:
{
this
.
data
({
f
:
{
disabled
:
false
,
hover
:
false
,
effect
:
(
this
.
hasClass
(
'hard'
))
?
'hard'
:
'sheet'
}});
}
});
this
.
flip
(
'options'
,
opts
);
...
...
@@ -1891,7 +1897,7 @@
return
this
;
},
setData
:
function
(
d
)
{
setData
:
function
(
d
)
{
var
data
=
this
.
data
();
...
...
@@ -1900,20 +1906,20 @@
return
this
;
},
options
:
function
(
opts
)
{
options
:
function
(
opts
)
{
var
data
=
this
.
data
().
f
;
if
(
opts
)
{
flipMethods
.
setData
.
call
(
this
,
{
opts
:
$
.
extend
({},
data
.
opts
||
flipOptions
,
opts
)
});
{
opts
:
$
.
extend
({},
data
.
opts
||
flipOptions
,
opts
)
});
return
this
;
}
else
return
data
.
opts
;
},
z
:
function
(
z
)
{
z
:
function
(
z
)
{
var
data
=
this
.
data
().
f
;
...
...
@@ -1927,35 +1933,35 @@
return
this
;
},
_cAllowed
:
function
()
{
_cAllowed
:
function
()
{
var
data
=
this
.
data
().
f
,
page
=
data
.
opts
.
page
,
turnData
=
data
.
opts
.
turn
.
data
(),
odd
=
page
%
2
;
odd
=
page
%
2
;
if
(
data
.
effect
==
'hard'
)
{
if
(
data
.
effect
==
'hard'
)
{
return
(
turnData
.
direction
==
'ltr'
)
?
return
(
turnData
.
direction
==
'ltr'
)
?
[(
odd
)
?
'r'
:
'l'
]
:
[(
odd
)
?
'l'
:
'r'
];
}
else
{
if
(
turnData
.
display
==
'single'
)
{
if
(
turnData
.
display
==
'single'
)
{
if
(
page
==
1
)
return
(
turnData
.
direction
==
'ltr'
)
?
if
(
page
==
1
)
return
(
turnData
.
direction
==
'ltr'
)
?
corners
[
'forward'
]
:
corners
[
'backward'
];
else
if
(
page
==
turnData
.
totalPages
)
return
(
turnData
.
direction
==
'ltr'
)
?
else
if
(
page
==
turnData
.
totalPages
)
return
(
turnData
.
direction
==
'ltr'
)
?
corners
[
'backward'
]
:
corners
[
'forward'
];
else
return
corners
[
'all'
];
}
else
{
return
(
turnData
.
direction
==
'ltr'
)
?
return
(
turnData
.
direction
==
'ltr'
)
?
corners
[(
odd
)
?
'forward'
:
'backward'
]
:
corners
[(
odd
)
?
'backward'
:
'forward'
];
...
...
@@ -1966,15 +1972,15 @@
},
_cornerActivated
:
function
(
p
)
{
_cornerActivated
:
function
(
p
)
{
var
data
=
this
.
data
().
f
,
width
=
this
.
width
(),
height
=
this
.
height
(),
point
=
{
x
:
p
.
x
,
y
:
p
.
y
,
corner
:
''
},
point
=
{
x
:
p
.
x
,
y
:
p
.
y
,
corner
:
''
},
csz
=
data
.
opts
.
cornerSize
;
if
(
point
.
x
<=
0
||
point
.
y
<=
0
||
point
.
x
>=
width
||
point
.
y
>=
height
)
if
(
point
.
x
<=
0
||
point
.
y
<=
0
||
point
.
x
>=
width
||
point
.
y
>=
height
)
return
false
;
var
allowedCorners
=
flipMethods
.
_cAllowed
.
call
(
this
);
...
...
@@ -1982,9 +1988,9 @@
switch
(
data
.
effect
)
{
case
'hard'
:
if
(
point
.
x
>
width
-
csz
)
if
(
point
.
x
>
width
-
csz
)
point
.
corner
=
'r'
;
else
if
(
point
.
x
<
csz
)
else
if
(
point
.
x
<
csz
)
point
.
corner
=
'l'
;
else
return
false
;
...
...
@@ -1993,29 +1999,29 @@
case
'sheet'
:
if
(
point
.
y
<
csz
)
point
.
corner
+=
't'
;
else
if
(
point
.
y
>=
height
-
csz
)
point
.
corner
+=
'b'
;
if
(
point
.
y
<
csz
)
point
.
corner
+=
't'
;
else
if
(
point
.
y
>=
height
-
csz
)
point
.
corner
+=
'b'
;
else
return
false
;
if
(
point
.
x
<=
csz
)
point
.
corner
+=
'l'
;
else
if
(
point
.
x
>=
width
-
csz
)
point
.
corner
+=
'r'
;
if
(
point
.
x
<=
csz
)
point
.
corner
+=
'l'
;
else
if
(
point
.
x
>=
width
-
csz
)
point
.
corner
+=
'r'
;
else
return
false
;
break
;
}
return
(
!
point
.
corner
||
$
.
inArray
(
point
.
corner
,
allowedCorners
)
==
-
1
)
?
return
(
!
point
.
corner
||
$
.
inArray
(
point
.
corner
,
allowedCorners
)
==
-
1
)
?
false
:
point
;
},
_isIArea
:
function
(
e
)
{
_isIArea
:
function
(
e
)
{
var
pos
=
this
.
data
().
f
.
parent
.
offset
();
...
...
@@ -2023,13 +2029,13 @@
return
flipMethods
.
_cornerActivated
.
call
(
this
,
{
x
:
e
.
pageX
-
pos
.
left
,
y
:
e
.
pageY
-
pos
.
top
x
:
e
.
pageX
-
pos
.
left
,
y
:
e
.
pageY
-
pos
.
top
});
},
_c
:
function
(
corner
,
opts
)
{
_c
:
function
(
corner
,
opts
)
{
opts
=
opts
||
0
;
...
...
@@ -2037,39 +2043,39 @@
case
'tl'
:
return
point2D
(
opts
,
opts
);
case
'tr'
:
return
point2D
(
this
.
width
()
-
opts
,
opts
);
return
point2D
(
this
.
width
()
-
opts
,
opts
);
case
'bl'
:
return
point2D
(
opts
,
this
.
height
()
-
opts
);
return
point2D
(
opts
,
this
.
height
()
-
opts
);
case
'br'
:
return
point2D
(
this
.
width
()
-
opts
,
this
.
height
()
-
opts
);
return
point2D
(
this
.
width
()
-
opts
,
this
.
height
()
-
opts
);
case
'l'
:
return
point2D
(
opts
,
0
);
case
'r'
:
return
point2D
(
this
.
width
()
-
opts
,
0
);
return
point2D
(
this
.
width
()
-
opts
,
0
);
}
},
_c2
:
function
(
corner
)
{
_c2
:
function
(
corner
)
{
switch
(
corner
)
{
case
'tl'
:
return
point2D
(
this
.
width
()
*
2
,
0
);
return
point2D
(
this
.
width
()
*
2
,
0
);
case
'tr'
:
return
point2D
(
-
this
.
width
(),
0
);
case
'bl'
:
return
point2D
(
this
.
width
()
*
2
,
this
.
height
());
return
point2D
(
this
.
width
()
*
2
,
this
.
height
());
case
'br'
:
return
point2D
(
-
this
.
width
(),
this
.
height
());
case
'l'
:
return
point2D
(
this
.
width
()
*
2
,
0
);
return
point2D
(
this
.
width
()
*
2
,
0
);
case
'r'
:
return
point2D
(
-
this
.
width
(),
0
);
}
},
_foldingPage
:
function
()
{
_foldingPage
:
function
()
{
var
data
=
this
.
data
().
f
;
...
...
@@ -2081,23 +2087,23 @@
if
(
opts
.
turn
)
{
data
=
opts
.
turn
.
data
();
if
(
data
.
display
==
'single'
)
return
(
opts
.
next
>
1
||
opts
.
page
>
1
)
?
data
.
pageObjs
[
0
]
:
null
;
return
(
opts
.
next
>
1
||
opts
.
page
>
1
)
?
data
.
pageObjs
[
0
]
:
null
;
else
return
data
.
pageObjs
[
opts
.
next
];
}
},
_backGradient
:
function
()
{
_backGradient
:
function
()
{
var
data
=
this
.
data
().
f
,
turnData
=
data
.
opts
.
turn
.
data
(),
gradient
=
turnData
.
opts
.
gradients
&&
(
turnData
.
display
==
'single'
||
(
data
.
opts
.
page
!=
2
&&
data
.
opts
.
page
!=
turnData
.
totalPages
-
1
));
gradient
=
turnData
.
opts
.
gradients
&&
(
turnData
.
display
==
'single'
||
(
data
.
opts
.
page
!=
2
&&
data
.
opts
.
page
!=
turnData
.
totalPages
-
1
));
if
(
gradient
&&
!
data
.
bshadow
)
data
.
bshadow
=
$
(
'<div/>'
,
divAtt
(
0
,
0
,
1
)).
css
({
'position'
:
''
,
width
:
this
.
width
(),
height
:
this
.
height
()
}).
css
({
'position'
:
''
,
width
:
this
.
width
(),
height
:
this
.
height
()
}).
appendTo
(
data
.
parent
);
return
gradient
;
...
...
@@ -2110,7 +2116,7 @@
},
resize
:
function
(
full
)
{
resize
:
function
(
full
)
{
var
data
=
this
.
data
().
f
,
turnData
=
data
.
opts
.
turn
.
data
(),
...
...
@@ -2121,11 +2127,11 @@
case
'hard'
:
if
(
full
)
{
data
.
wrapper
.
css
({
width
:
width
,
height
:
height
});
data
.
fpage
.
css
({
width
:
width
,
height
:
height
});
data
.
wrapper
.
css
({
width
:
width
,
height
:
height
});
data
.
fpage
.
css
({
width
:
width
,
height
:
height
});
if
(
turnData
.
opts
.
gradients
)
{
data
.
ashadow
.
css
({
width
:
width
,
height
:
height
});
data
.
bshadow
.
css
({
width
:
width
,
height
:
height
});
data
.
ashadow
.
css
({
width
:
width
,
height
:
height
});
data
.
bshadow
.
css
({
width
:
width
,
height
:
height
});
}
}
...
...
@@ -2133,31 +2139,33 @@
case
'sheet'
:
if
(
full
)
{
var
size
=
Math
.
round
(
Math
.
sqrt
(
Math
.
pow
(
width
,
2
)
+
Math
.
pow
(
height
,
2
)));
var
size
=
Math
.
round
(
Math
.
sqrt
(
Math
.
pow
(
width
,
2
)
+
Math
.
pow
(
height
,
2
)));
data
.
wrapper
.
css
({
width
:
size
,
height
:
size
});
data
.
fwrapper
.
css
({
width
:
size
,
height
:
size
}).
data
.
wrapper
.
css
({
width
:
size
,
height
:
size
});
data
.
fwrapper
.
css
({
width
:
size
,
height
:
size
}).
children
(
':first-child'
).
css
({
width
:
width
,
height
:
height
});
css
({
width
:
width
,
height
:
height
});
data
.
fpage
.
css
({
width
:
width
,
height
:
height
});
data
.
fpage
.
css
({
width
:
width
,
height
:
height
});
if
(
turnData
.
opts
.
gradients
)
data
.
ashadow
.
css
({
width
:
width
,
height
:
height
});
data
.
ashadow
.
css
({
width
:
width
,
height
:
height
});
if
(
flipMethods
.
_backGradient
.
call
(
this
))
data
.
bshadow
.
css
({
width
:
width
,
height
:
height
});
data
.
bshadow
.
css
({
width
:
width
,
height
:
height
});
}
if
(
data
.
parent
.
is
(
':visible'
))
{
var
offset
=
findPos
(
data
.
parent
[
0
]);
data
.
fwrapper
.
css
({
top
:
offset
.
top
,
left
:
offset
.
left
});
data
.
fwrapper
.
css
({
top
:
offset
.
top
,
left
:
offset
.
left
});
//if (data.opts.turn) {
offset
=
findPos
(
data
.
opts
.
turn
[
0
]);
data
.
fparent
.
css
({
top
:
-
offset
.
top
,
left
:
-
offset
.
left
});
data
.
fparent
.
css
({
top
:
-
offset
.
top
,
left
:
-
offset
.
left
});
//}
}
...
...
@@ -2170,7 +2178,7 @@
// Prepares the page by adding a general wrapper and another objects
_addPageWrapper
:
function
()
{
_addPageWrapper
:
function
()
{
var
att
,
data
=
this
.
data
().
f
,
...
...
@@ -2209,12 +2217,12 @@
var
width
=
this
.
width
(),
height
=
this
.
height
(),
size
=
Math
.
round
(
Math
.
sqrt
(
Math
.
pow
(
width
,
2
)
+
Math
.
pow
(
height
,
2
)));
size
=
Math
.
round
(
Math
.
sqrt
(
Math
.
pow
(
width
,
2
)
+
Math
.
pow
(
height
,
2
)));
data
.
fparent
=
data
.
opts
.
turn
.
data
().
fparent
;
if
(
!
data
.
fparent
)
{
var
fparent
=
$
(
'<div/>'
,
{
css
:
{
'pointer-events'
:
'none'
}
}).
hide
();
var
fparent
=
$
(
'<div/>'
,
{
css
:
{
'pointer-events'
:
'none'
}
}).
hide
();
fparent
.
data
().
flips
=
0
;
fparent
.
css
(
divAtt
(
0
,
0
,
'auto'
,
'visible'
).
css
).
appendTo
(
data
.
opts
.
turn
);
...
...
@@ -2223,7 +2231,7 @@
data
.
fparent
=
fparent
;
}
this
.
css
({
position
:
'absolute'
,
top
:
0
,
left
:
0
,
bottom
:
'auto'
,
right
:
'auto'
});
this
.
css
({
position
:
'absolute'
,
top
:
0
,
left
:
0
,
bottom
:
'auto'
,
right
:
'auto'
});
data
.
wrapper
=
$
(
'<div/>'
,
divAtt
(
0
,
0
,
this
.
css
(
'z-index'
))).
appendTo
(
parent
).
...
...
@@ -2234,7 +2242,7 @@
appendTo
(
data
.
fparent
);
data
.
fpage
=
$
(
'<div/>'
,
divAtt
(
0
,
0
,
0
,
'visible'
)).
css
({
cursor
:
'default'
}).
css
({
cursor
:
'default'
}).
appendTo
(
data
.
fwrapper
);
if
(
turnData
.
opts
.
gradients
)
...
...
@@ -2253,7 +2261,7 @@
// Takes a 2P point from the screen and applies the transformation
_fold
:
function
(
point
)
{
_fold
:
function
(
point
)
{
var
data
=
this
.
data
().
f
,
turnData
=
data
.
opts
.
turn
.
data
(),
...
...
@@ -2265,8 +2273,8 @@
case
'hard'
:
if
(
point
.
corner
==
'l'
)
point
.
x
=
Math
.
min
(
Math
.
max
(
point
.
x
,
0
),
width
*
2
);
if
(
point
.
corner
==
'l'
)
point
.
x
=
Math
.
min
(
Math
.
max
(
point
.
x
,
0
),
width
*
2
);
else
point
.
x
=
Math
.
max
(
Math
.
min
(
point
.
x
,
width
),
-
width
);
...
...
@@ -2277,10 +2285,10 @@
parentOrigin
,
totalPages
=
turnData
.
totalPages
,
zIndex
=
data
.
opts
[
'z-index'
]
||
totalPages
,
parentCss
=
{
'overflow'
:
'visible'
},
relX
=
(
o
.
x
)
?
(
o
.
x
-
point
.
x
)
/
width
:
point
.
x
/
width
,
parentCss
=
{
'overflow'
:
'visible'
},
relX
=
(
o
.
x
)
?
(
o
.
x
-
point
.
x
)
/
width
:
point
.
x
/
width
,
angle
=
relX
*
90
,
half
=
angle
<
90
;
half
=
angle
<
90
;
switch
(
point
.
corner
)
{
case
'l'
:
...
...
@@ -2290,11 +2298,11 @@
if
(
half
)
{
leftPos
=
0
;
shadow
=
data
.
opts
.
next
-
1
>
0
;
shadow
=
data
.
opts
.
next
-
1
>
0
;
gradientX
=
1
;
}
else
{
leftPos
=
'100%'
;
shadow
=
data
.
opts
.
page
+
1
<
totalPages
;
shadow
=
data
.
opts
.
page
+
1
<
totalPages
;
gradientX
=
0
;
}
...
...
@@ -2308,34 +2316,34 @@
if
(
half
)
{
leftPos
=
0
;
shadow
=
data
.
opts
.
next
+
1
<
totalPages
;
shadow
=
data
.
opts
.
next
+
1
<
totalPages
;
gradientX
=
0
;
}
else
{
leftPos
=
'-100%'
;
shadow
=
data
.
opts
.
page
!=
1
;
shadow
=
data
.
opts
.
page
!=
1
;
gradientX
=
1
;
}
break
;
}
parentCss
[
vendor
+
'perspective-origin'
]
=
parentOrigin
;
parentCss
[
vendor
+
'perspective-origin'
]
=
parentOrigin
;
data
.
wrapper
.
transform
(
'rotateY('
+
angle
+
'deg)'
+
'translate3d(0px, 0px, '
+
(
this
.
attr
(
'depth'
)
||
0
)
+
'px)'
,
parentOrigin
);
data
.
wrapper
.
transform
(
'rotateY('
+
angle
+
'deg)'
+
'translate3d(0px, 0px, '
+
(
this
.
attr
(
'depth'
)
||
0
)
+
'px)'
,
parentOrigin
);
data
.
fpage
.
transform
(
'translateX('
+
width
+
'px) rotateY('
+
(
180
+
angle
)
+
'deg)'
,
fpageOrigin
);
data
.
fpage
.
transform
(
'translateX('
+
width
+
'px) rotateY('
+
(
180
+
angle
)
+
'deg)'
,
fpageOrigin
);
data
.
parent
.
css
(
parentCss
);
if
(
half
)
{
relX
=
-
relX
+
1
;
data
.
wrapper
.
css
({
zIndex
:
zIndex
+
1
});
data
.
fpage
.
css
({
zIndex
:
zIndex
});
relX
=
-
relX
+
1
;
data
.
wrapper
.
css
({
zIndex
:
zIndex
+
1
});
data
.
fpage
.
css
({
zIndex
:
zIndex
});
}
else
{
relX
=
relX
-
1
;
data
.
wrapper
.
css
({
zIndex
:
zIndex
});
data
.
fpage
.
css
({
zIndex
:
zIndex
+
1
});
relX
=
relX
-
1
;
data
.
wrapper
.
css
({
zIndex
:
zIndex
});
data
.
fpage
.
css
({
zIndex
:
zIndex
+
1
});
}
if
(
turnData
.
opts
.
gradients
)
{
...
...
@@ -2343,28 +2351,28 @@
data
.
ashadow
.
css
({
display
:
''
,
left
:
leftPos
,
backgroundColor
:
'rgba(0,0,0,'
+
(
0.5
*
relX
)
+
')'
backgroundColor
:
'rgba(0,0,0,'
+
(
0.5
*
relX
)
+
')'
}).
transform
(
'rotateY(0deg)'
);
else
data
.
ashadow
.
hide
();
data
.
bshadow
.
css
({
opacity
:
-
relX
+
1
});
data
.
bshadow
.
css
({
opacity
:
-
relX
+
1
});
if
(
half
)
{
if
(
data
.
bshadow
.
parent
()[
0
]
!=
data
.
wrapper
[
0
])
{
if
(
data
.
bshadow
.
parent
()[
0
]
!=
data
.
wrapper
[
0
])
{
data
.
bshadow
.
appendTo
(
data
.
wrapper
);
}
}
else
{
if
(
data
.
bshadow
.
parent
()[
0
]
!=
data
.
fpage
[
0
])
{
if
(
data
.
bshadow
.
parent
()[
0
]
!=
data
.
fpage
[
0
])
{
data
.
bshadow
.
appendTo
(
data
.
fpage
);
}
}
/*data.bshadow.css({
backgroundColor: 'rgba(0,0,0,'+(0.1)+')'
})*/
gradient
(
data
.
bshadow
,
point2D
(
gradientX
*
100
,
0
),
point2D
((
-
gradientX
+
1
)
*
100
,
0
),
[[
0
,
'rgba(0,0,0,0.3)'
],
[
1
,
'rgba(0,0,0,0)'
]],
2
);
gradient
(
data
.
bshadow
,
point2D
(
gradientX
*
100
,
0
),
point2D
((
-
gradientX
+
1
)
*
100
,
0
),
[[
0
,
'rgba(0,0,0,0.3)'
],
[
1
,
'rgba(0,0,0,0)'
]],
2
);
}
...
...
@@ -2392,7 +2400,7 @@
top
=
point
.
corner
.
substr
(
0
,
1
)
==
't'
,
left
=
point
.
corner
.
substr
(
1
,
1
)
==
'l'
,
compute
=
function
()
{
compute
=
function
()
{
var
rel
=
point2D
(
0
,
0
);
var
middle
=
point2D
(
0
,
0
);
...
...
@@ -2405,10 +2413,10 @@
rel
.
y
=
(
o
.
y
)
?
o
.
y
-
point
.
y
:
point
.
y
;
}
middle
.
x
=
(
left
)?
width
-
rel
.
x
/
2
:
point
.
x
+
rel
.
x
/
2
;
middle
.
y
=
rel
.
y
/
2
;
middle
.
x
=
(
left
)
?
width
-
rel
.
x
/
2
:
point
.
x
+
rel
.
x
/
2
;
middle
.
y
=
rel
.
y
/
2
;
var
alpha
=
A90
-
Math
.
atan2
(
rel
.
y
,
rel
.
x
),
var
alpha
=
A90
-
Math
.
atan2
(
rel
.
y
,
rel
.
x
),
gamma
=
alpha
-
Math
.
atan2
(
middle
.
y
,
middle
.
x
),
distance
=
Math
.
max
(
0
,
Math
.
sin
(
gamma
)
*
Math
.
sqrt
(
Math
.
pow
(
middle
.
x
,
2
)
+
Math
.
pow
(
middle
.
y
,
2
)));
...
...
@@ -2417,59 +2425,59 @@
tr
=
point2D
(
distance
*
Math
.
sin
(
alpha
),
distance
*
Math
.
cos
(
alpha
));
if
(
alpha
>
A90
)
{
tr
.
x
=
tr
.
x
+
Math
.
abs
(
tr
.
y
*
rel
.
y
/
rel
.
x
);
tr
.
x
=
tr
.
x
+
Math
.
abs
(
tr
.
y
*
rel
.
y
/
rel
.
x
);
tr
.
y
=
0
;
if
(
Math
.
round
(
tr
.
x
*
Math
.
tan
(
PI
-
alpha
))
<
height
)
{
point
.
y
=
Math
.
sqrt
(
Math
.
pow
(
height
,
2
)
+
2
*
middle
.
x
*
rel
.
x
);
if
(
Math
.
round
(
tr
.
x
*
Math
.
tan
(
PI
-
alpha
))
<
height
)
{
point
.
y
=
Math
.
sqrt
(
Math
.
pow
(
height
,
2
)
+
2
*
middle
.
x
*
rel
.
x
);
if
(
top
)
point
.
y
=
height
-
point
.
y
;
return
compute
();
}
}
if
(
alpha
>
A90
)
{
var
beta
=
PI
-
alpha
,
dd
=
h
-
height
/
Math
.
sin
(
beta
);
mv
=
point2D
(
Math
.
round
(
dd
*
Math
.
cos
(
beta
)),
Math
.
round
(
dd
*
Math
.
sin
(
beta
)));
if
(
alpha
>
A90
)
{
var
beta
=
PI
-
alpha
,
dd
=
h
-
height
/
Math
.
sin
(
beta
);
mv
=
point2D
(
Math
.
round
(
dd
*
Math
.
cos
(
beta
)),
Math
.
round
(
dd
*
Math
.
sin
(
beta
)));
if
(
left
)
mv
.
x
=
-
mv
.
x
;
if
(
top
)
mv
.
y
=
-
mv
.
y
;
}
px
=
Math
.
round
(
tr
.
y
/
Math
.
tan
(
alpha
)
+
tr
.
x
);
px
=
Math
.
round
(
tr
.
y
/
Math
.
tan
(
alpha
)
+
tr
.
x
);
var
side
=
width
-
px
,
sideX
=
side
*
Math
.
cos
(
alpha
*
2
),
sideY
=
side
*
Math
.
sin
(
alpha
*
2
);
sideX
=
side
*
Math
.
cos
(
alpha
*
2
),
sideY
=
side
*
Math
.
sin
(
alpha
*
2
);
df
=
point2D
(
Math
.
round
((
left
?
side
-
sideX
:
px
+
sideX
)),
Math
.
round
((
left
?
side
-
sideX
:
px
+
sideX
)),
Math
.
round
((
top
)
?
sideY
:
height
-
sideY
));
// Gradients
if
(
turnData
.
opts
.
gradients
)
{
gradientSize
=
side
*
Math
.
sin
(
alpha
);
gradientSize
=
side
*
Math
.
sin
(
alpha
);
var
endingPoint
=
flipMethods
.
_c2
.
call
(
that
,
point
.
corner
),
far
=
Math
.
sqrt
(
Math
.
pow
(
endingPoint
.
x
-
point
.
x
,
2
)
+
Math
.
pow
(
endingPoint
.
y
-
point
.
y
,
2
))
/
width
;
far
=
Math
.
sqrt
(
Math
.
pow
(
endingPoint
.
x
-
point
.
x
,
2
)
+
Math
.
pow
(
endingPoint
.
y
-
point
.
y
,
2
))
/
width
;
shadowVal
=
Math
.
sin
(
A90
*
((
far
>
1
)
?
2
-
far
:
far
));
shadowVal
=
Math
.
sin
(
A90
*
((
far
>
1
)
?
2
-
far
:
far
));
gradientOpacity
=
Math
.
min
(
far
,
1
);
gradientStartVal
=
gradientSize
>
100
?
(
gradientSize
-
100
)
/
gradientSize
:
0
;
gradientStartVal
=
gradientSize
>
100
?
(
gradientSize
-
100
)
/
gradientSize
:
0
;
gradientEndPointA
=
point2D
(
gradientSize
*
Math
.
sin
(
alpha
)
/
width
*
100
,
gradientSize
*
Math
.
cos
(
alpha
)
/
height
*
100
);
gradientSize
*
Math
.
sin
(
alpha
)
/
width
*
100
,
gradientSize
*
Math
.
cos
(
alpha
)
/
height
*
100
);
if
(
flipMethods
.
_backGradient
.
call
(
that
))
{
gradientEndPointB
=
point2D
(
gradientSize
*
1.2
*
Math
.
sin
(
alpha
)
/
width
*
100
,
gradientSize
*
1.2
*
Math
.
cos
(
alpha
)
/
height
*
100
);
gradientSize
*
1.2
*
Math
.
sin
(
alpha
)
/
width
*
100
,
gradientSize
*
1.2
*
Math
.
cos
(
alpha
)
/
height
*
100
);
if
(
!
left
)
gradientEndPointB
.
x
=
100
-
gradientEndPointB
.
x
;
if
(
!
top
)
gradientEndPointB
.
y
=
100
-
gradientEndPointB
.
y
;
if
(
!
left
)
gradientEndPointB
.
x
=
100
-
gradientEndPointB
.
x
;
if
(
!
top
)
gradientEndPointB
.
y
=
100
-
gradientEndPointB
.
y
;
}
...
...
@@ -2481,12 +2489,12 @@
return
true
;
},
transform
=
function
(
tr
,
c
,
x
,
a
)
{
transform
=
function
(
tr
,
c
,
x
,
a
)
{
var
f
=
[
'0'
,
'auto'
],
mvW
=
(
width
-
h
)
*
x
[
0
]
/
100
,
mvH
=
(
height
-
h
)
*
x
[
1
]
/
100
,
cssA
=
{
left
:
f
[
c
[
0
]],
top
:
f
[
c
[
1
]],
right
:
f
[
c
[
2
]],
bottom
:
f
[
c
[
3
]]
},
var
f
=
[
'0'
,
'auto'
],
mvW
=
(
width
-
h
)
*
x
[
0
]
/
100
,
mvH
=
(
height
-
h
)
*
x
[
1
]
/
100
,
cssA
=
{
left
:
f
[
c
[
0
]],
top
:
f
[
c
[
1
]],
right
:
f
[
c
[
2
]],
bottom
:
f
[
c
[
3
]]
},
cssB
=
{},
aliasingFk
=
(
a
!=
90
&&
a
!=
-
90
)
?
(
left
?
-
1
:
1
)
:
0
,
aliasingFk
=
(
a
!=
90
&&
a
!=
-
90
)
?
(
left
?
-
1
:
1
)
:
0
,
origin
=
x
[
0
]
+
'% '
+
x
[
1
]
+
'%'
;
that
.
css
(
cssA
).
...
...
@@ -2494,40 +2502,40 @@
data
.
fpage
.
css
(
cssA
).
transform
(
rotate
(
a
)
+
translate
(
tr
.
x
+
df
.
x
-
mv
.
x
-
width
*
x
[
0
]
/
100
,
tr
.
y
+
df
.
y
-
mv
.
y
-
height
*
x
[
1
]
/
100
,
ac
)
+
rotate
((
180
/
a
-
2
)
*
a
),
translate
(
tr
.
x
+
df
.
x
-
mv
.
x
-
width
*
x
[
0
]
/
100
,
tr
.
y
+
df
.
y
-
mv
.
y
-
height
*
x
[
1
]
/
100
,
ac
)
+
rotate
((
180
/
a
-
2
)
*
a
),
origin
);
data
.
wrapper
.
transform
(
translate
(
-
tr
.
x
+
mvW
-
aliasingFk
,
-
tr
.
y
+
mvH
,
ac
)
+
rotate
(
-
a
),
origin
);
data
.
wrapper
.
transform
(
translate
(
-
tr
.
x
+
mvW
-
aliasingFk
,
-
tr
.
y
+
mvH
,
ac
)
+
rotate
(
-
a
),
origin
);
data
.
fwrapper
.
transform
(
translate
(
-
tr
.
x
+
mv
.
x
+
mvW
,
-
tr
.
y
+
mv
.
y
+
mvH
,
ac
)
+
rotate
(
-
a
),
origin
);
if
(
turnData
.
opts
.
gradients
)
{
if
(
x
[
0
])
gradientEndPointA
.
x
=
100
-
gradientEndPointA
.
x
;
gradientEndPointA
.
x
=
100
-
gradientEndPointA
.
x
;
if
(
x
[
1
])
gradientEndPointA
.
y
=
(
100
-
gradientEndPointA
.
y
);
gradientEndPointA
.
y
=
(
100
-
gradientEndPointA
.
y
);
cssB
[
'box-shadow'
]
=
'0 0 20px rgba(0,0,0,'
+
(
0.5
*
shadowVal
)
+
')'
;
cssB
[
'box-shadow'
]
=
'0 0 20px rgba(0,0,0,'
+
(
0.5
*
shadowVal
)
+
')'
;
folding
.
css
(
cssB
);
gradient
(
data
.
ashadow
,
point2D
(
left
?
100
:
0
,
top
?
0
:
100
),
point2D
(
left
?
100
:
0
,
top
?
0
:
100
),
point2D
(
gradientEndPointA
.
x
,
gradientEndPointA
.
y
),
[[
gradientStartVal
,
'rgba(0,0,0,0)'
],
[((
1
-
gradientStartVal
)
*
0.8
)
+
gradientStartVal
,
'rgba(0,0,0,'
+
(
0.2
*
gradientOpacity
)
+
')'
],
[
1
,
'rgba(255,255,255,'
+
(
0.2
*
gradientOpacity
)
+
')'
]],
[((
1
-
gradientStartVal
)
*
0.8
)
+
gradientStartVal
,
'rgba(0,0,0,'
+
(
0.2
*
gradientOpacity
)
+
')'
],
[
1
,
'rgba(255,255,255,'
+
(
0.2
*
gradientOpacity
)
+
')'
]],
3
,
alpha
);
if
(
flipMethods
.
_backGradient
.
call
(
that
))
gradient
(
data
.
bshadow
,
point2D
(
left
?
0
:
100
,
top
?
0
:
100
),
point2D
(
left
?
0
:
100
,
top
?
0
:
100
),
point2D
(
gradientEndPointB
.
x
,
gradientEndPointB
.
y
),
[[
0.6
,
'rgba(0,0,0,0)'
],
[
0.8
,
'rgba(0,0,0,'
+
(
0.3
*
gradientOpacity
)
+
')'
],
[
0.8
,
'rgba(0,0,0,'
+
(
0.3
*
gradientOpacity
)
+
')'
],
[
1
,
'rgba(0,0,0,0)'
]
],
3
);
...
...
@@ -2536,33 +2544,33 @@
};
switch
(
point
.
corner
)
{
case
'l'
:
case
'l'
:
break
;
case
'r'
:
case
'r'
:
break
;
case
'tl'
:
case
'tl'
:
point
.
x
=
Math
.
max
(
point
.
x
,
1
);
compute
();
transform
(
tr
,
[
1
,
0
,
0
,
1
],
[
100
,
0
],
a
);
transform
(
tr
,
[
1
,
0
,
0
,
1
],
[
100
,
0
],
a
);
break
;
case
'tr'
:
point
.
x
=
Math
.
min
(
point
.
x
,
width
-
1
);
case
'tr'
:
point
.
x
=
Math
.
min
(
point
.
x
,
width
-
1
);
compute
();
transform
(
point2D
(
-
tr
.
x
,
tr
.
y
),
[
0
,
0
,
0
,
1
],
[
0
,
0
],
-
a
);
transform
(
point2D
(
-
tr
.
x
,
tr
.
y
),
[
0
,
0
,
0
,
1
],
[
0
,
0
],
-
a
);
break
;
case
'bl'
:
case
'bl'
:
point
.
x
=
Math
.
max
(
point
.
x
,
1
);
compute
();
transform
(
point2D
(
tr
.
x
,
-
tr
.
y
),
[
1
,
1
,
0
,
0
],
[
100
,
100
],
-
a
);
transform
(
point2D
(
tr
.
x
,
-
tr
.
y
),
[
1
,
1
,
0
,
0
],
[
100
,
100
],
-
a
);
break
;
case
'br'
:
point
.
x
=
Math
.
min
(
point
.
x
,
width
-
1
);
case
'br'
:
point
.
x
=
Math
.
min
(
point
.
x
,
width
-
1
);
compute
();
transform
(
point2D
(
-
tr
.
x
,
-
tr
.
y
),
[
0
,
1
,
1
,
0
],
[
0
,
100
],
a
);
transform
(
point2D
(
-
tr
.
x
,
-
tr
.
y
),
[
0
,
1
,
1
,
0
],
[
0
,
100
],
a
);
break
;
}
...
...
@@ -2573,7 +2581,7 @@
},
_moveFoldingPage
:
function
(
move
)
{
_moveFoldingPage
:
function
(
move
)
{
var
data
=
this
.
data
().
f
;
...
...
@@ -2588,7 +2596,7 @@
var
nextPage
=
data
.
opts
.
next
;
if
(
place
[
nextPage
]
!=
data
.
opts
.
page
)
{
if
(
place
[
nextPage
]
!=
data
.
opts
.
page
)
{
if
(
data
.
folding
)
flipMethods
.
_moveFoldingPage
.
call
(
this
,
false
);
...
...
@@ -2634,7 +2642,7 @@
}
},
_showFoldedPage
:
function
(
c
,
animate
)
{
_showFoldedPage
:
function
(
c
,
animate
)
{
var
folding
=
flipMethods
.
_foldingPage
.
call
(
this
),
dd
=
this
.
data
(),
...
...
@@ -2643,17 +2651,17 @@
if
(
folding
)
{
if
(
!
visible
||
!
data
.
point
||
data
.
point
.
corner
!=
c
.
corner
)
{
if
(
!
visible
||
!
data
.
point
||
data
.
point
.
corner
!=
c
.
corner
)
{
var
corner
=
(
data
.
status
==
'hover'
||
data
.
status
==
'peel'
||
data
.
status
==
'hover'
||
data
.
status
==
'peel'
||
data
.
opts
.
turn
.
data
().
mouseAction
)
?
c
.
corner
:
null
;
visible
=
false
;
if
(
trigger
(
'start'
,
this
,
[
data
.
opts
,
corner
])
==
'prevented'
)
if
(
trigger
(
'start'
,
this
,
[
data
.
opts
,
corner
])
==
'prevented'
)
return
false
;
}
...
...
@@ -2661,14 +2669,14 @@
if
(
animate
)
{
var
that
=
this
,
point
=
(
data
.
point
&&
data
.
point
.
corner
==
c
.
corner
)
?
point
=
(
data
.
point
&&
data
.
point
.
corner
==
c
.
corner
)
?
data
.
point
:
flipMethods
.
_c
.
call
(
this
,
c
.
corner
,
1
);
this
.
animatef
({
from
:
[
point
.
x
,
point
.
y
],
to
:
[
c
.
x
,
c
.
y
],
duration
:
500
,
frame
:
function
(
v
)
{
frame
:
function
(
v
)
{
c
.
x
=
Math
.
round
(
v
[
0
]);
c
.
y
=
Math
.
round
(
v
[
1
]);
flipMethods
.
_fold
.
call
(
that
,
c
);
...
...
@@ -2686,7 +2694,7 @@
if
(
!
visible
)
{
switch
(
data
.
effect
)
{
switch
(
data
.
effect
)
{
case
'hard'
:
data
.
visible
=
true
;
...
...
@@ -2717,7 +2725,7 @@
return
false
;
},
hide
:
function
()
{
hide
:
function
()
{
var
data
=
this
.
data
().
f
,
turnData
=
data
.
opts
.
turn
.
data
(),
...
...
@@ -2738,10 +2746,10 @@
break
;
case
'sheet'
:
if
((
--
data
.
fparent
.
data
().
flips
)
===
0
)
if
((
--
data
.
fparent
.
data
().
flips
)
===
0
)
data
.
fparent
.
hide
();
this
.
css
({
left
:
0
,
top
:
0
,
right
:
'auto'
,
bottom
:
'auto'
}).
this
.
css
({
left
:
0
,
top
:
0
,
right
:
'auto'
,
bottom
:
'auto'
}).
transform
(
''
);
data
.
wrapper
.
transform
(
''
);
...
...
@@ -2761,7 +2769,7 @@
return
this
;
},
hideFoldedPage
:
function
(
animate
)
{
hideFoldedPage
:
function
(
animate
)
{
var
data
=
this
.
data
().
f
;
...
...
@@ -2769,7 +2777,7 @@
var
that
=
this
,
p1
=
data
.
point
,
hide
=
function
()
{
hide
=
function
()
{
data
.
point
=
null
;
data
.
status
=
''
;
that
.
flip
(
'hide'
);
...
...
@@ -2779,15 +2787,15 @@
if
(
animate
)
{
var
p4
=
flipMethods
.
_c
.
call
(
this
,
p1
.
corner
),
top
=
(
p1
.
corner
.
substr
(
0
,
1
)
==
't'
),
delta
=
(
top
)
?
Math
.
min
(
0
,
p1
.
y
-
p4
.
y
)
/
2
:
Math
.
max
(
0
,
p1
.
y
-
p4
.
y
)
/
2
,
p2
=
point2D
(
p1
.
x
,
p1
.
y
+
delta
),
p3
=
point2D
(
p4
.
x
,
p4
.
y
-
delta
);
top
=
(
p1
.
corner
.
substr
(
0
,
1
)
==
't'
),
delta
=
(
top
)
?
Math
.
min
(
0
,
p1
.
y
-
p4
.
y
)
/
2
:
Math
.
max
(
0
,
p1
.
y
-
p4
.
y
)
/
2
,
p2
=
point2D
(
p1
.
x
,
p1
.
y
+
delta
),
p3
=
point2D
(
p4
.
x
,
p4
.
y
-
delta
);
this
.
animatef
({
from
:
0
,
to
:
1
,
frame
:
function
(
v
)
{
frame
:
function
(
v
)
{
var
np
=
bezier
(
p1
,
p2
,
p3
,
p4
,
v
);
p1
.
x
=
np
.
x
;
p1
.
y
=
np
.
y
;
...
...
@@ -2806,15 +2814,17 @@
}
},
turnPage
:
function
(
corner
)
{
turnPage
:
function
(
corner
)
{
var
that
=
this
,
data
=
this
.
data
().
f
,
turnData
=
data
.
opts
.
turn
.
data
();
corner
=
{
corner
:
(
data
.
corner
)
?
corner
=
{
corner
:
(
data
.
corner
)
?
data
.
corner
.
corner
:
corner
||
flipMethods
.
_cAllowed
.
call
(
this
)[
0
]};
corner
||
flipMethods
.
_cAllowed
.
call
(
this
)[
0
]
};
var
p1
=
data
.
point
||
flipMethods
.
_c
.
call
(
this
,
...
...
@@ -2826,7 +2836,7 @@
animatef
({
from
:
0
,
to
:
1
,
frame
:
function
(
v
)
{
frame
:
function
(
v
)
{
var
np
=
bezier
(
p1
,
p1
,
p4
,
p4
,
v
);
corner
.
x
=
np
.
x
;
...
...
@@ -2834,7 +2844,7 @@
flipMethods
.
_showFoldedPage
.
call
(
that
,
corner
);
},
complete
:
function
()
{
complete
:
function
()
{
that
.
trigger
(
'end'
,
[
data
.
opts
,
true
]);
...
...
@@ -2846,32 +2856,31 @@
data
.
corner
=
null
;
},
moving
:
function
()
{
moving
:
function
()
{
return
'effect'
in
this
.
data
();
},
isTurning
:
function
()
{
isTurning
:
function
()
{
return
this
.
flip
(
'moving'
)
&&
this
.
data
().
effect
.
turning
;
},
corner
:
function
()
{
corner
:
function
()
{
return
this
.
data
().
f
.
corner
;
},
_eventStart
:
function
(
e
)
{
_eventStart
:
function
(
e
)
{
var
data
=
this
.
data
().
f
,
turn
=
data
.
opts
.
turn
;
if
(
!
data
.
corner
&&
!
data
.
disabled
&&
!
this
.
flip
(
'isTurning'
)
&&
data
.
opts
.
page
==
turn
.
data
().
pagePlace
[
data
.
opts
.
page
])
{
data
.
opts
.
page
==
turn
.
data
().
pagePlace
[
data
.
opts
.
page
])
{
data
.
corner
=
flipMethods
.
_isIArea
.
call
(
this
,
e
);
...
...
@@ -2889,7 +2898,7 @@
},
_eventMove
:
function
(
e
)
{
_eventMove
:
function
(
e
)
{
var
data
=
this
.
data
().
f
;
...
...
@@ -2900,8 +2909,8 @@
if
(
data
.
corner
)
{
var
pos
=
data
.
parent
.
offset
();
data
.
corner
.
x
=
e
[
0
].
pageX
-
pos
.
left
;
data
.
corner
.
y
=
e
[
0
].
pageY
-
pos
.
top
;
data
.
corner
.
x
=
e
[
0
].
pageX
-
pos
.
left
;
data
.
corner
.
y
=
e
[
0
].
pageY
-
pos
.
top
;
flipMethods
.
_showFoldedPage
.
call
(
this
,
data
.
corner
);
}
else
if
(
data
.
hover
&&
!
this
.
data
().
effect
&&
this
.
is
(
':visible'
))
{
...
...
@@ -2910,9 +2919,9 @@
if
(
point
)
{
if
((
data
.
effect
==
'sheet'
&&
point
.
corner
.
length
==
2
)
||
data
.
effect
==
'hard'
)
{
if
((
data
.
effect
==
'sheet'
&&
point
.
corner
.
length
==
2
)
||
data
.
effect
==
'hard'
)
{
data
.
status
=
'hover'
;
var
origin
=
flipMethods
.
_c
.
call
(
this
,
point
.
corner
,
data
.
opts
.
cornerSize
/
2
);
var
origin
=
flipMethods
.
_c
.
call
(
this
,
point
.
corner
,
data
.
opts
.
cornerSize
/
2
);
point
.
x
=
origin
.
x
;
point
.
y
=
origin
.
y
;
flipMethods
.
_showFoldedPage
.
call
(
this
,
point
,
true
);
...
...
@@ -2920,7 +2929,7 @@
}
else
{
if
(
data
.
status
==
'hover'
)
{
if
(
data
.
status
==
'hover'
)
{
data
.
status
=
''
;
flipMethods
.
hideFoldedPage
.
call
(
this
,
true
);
}
...
...
@@ -2933,13 +2942,13 @@
},
_eventEnd
:
function
()
{
_eventEnd
:
function
()
{
var
data
=
this
.
data
().
f
,
corner
=
data
.
corner
;
if
(
!
data
.
disabled
&&
corner
)
{
if
(
trigger
(
'released'
,
this
,
[
data
.
point
||
corner
])
!=
'prevented'
)
{
if
(
trigger
(
'released'
,
this
,
[
data
.
point
||
corner
])
!=
'prevented'
)
{
flipMethods
.
hideFoldedPage
.
call
(
this
,
true
);
}
}
...
...
@@ -2948,16 +2957,16 @@
},
disable
:
function
(
disable
)
{
disable
:
function
(
disable
)
{
flipMethods
.
setData
.
call
(
this
,
{
'disabled'
:
disable
});
flipMethods
.
setData
.
call
(
this
,
{
'disabled'
:
disable
});
return
this
;
},
hover
:
function
(
hover
)
{
hover
:
function
(
hover
)
{
flipMethods
.
setData
.
call
(
this
,
{
'hover'
:
hover
});
flipMethods
.
setData
.
call
(
this
,
{
'hover'
:
hover
});
return
this
;
},
...
...
@@ -2968,12 +2977,12 @@
if
(
corner
)
{
if
(
$
.
inArray
(
corner
,
corners
.
all
)
==
-
1
)
throw
turnError
(
'Corner '
+
corner
+
' is not permitted'
);
if
(
$
.
inArray
(
corner
,
corners
.
all
)
==
-
1
)
throw
turnError
(
'Corner '
+
corner
+
' is not permitted'
);
if
(
$
.
inArray
(
corner
,
flipMethods
.
_cAllowed
.
call
(
this
))
!=
-
1
)
{
if
(
$
.
inArray
(
corner
,
flipMethods
.
_cAllowed
.
call
(
this
))
!=
-
1
)
{
var
point
=
flipMethods
.
_c
.
call
(
this
,
corner
,
data
.
opts
.
cornerSize
/
2
);
var
point
=
flipMethods
.
_c
.
call
(
this
,
corner
,
data
.
opts
.
cornerSize
/
2
);
data
.
status
=
'peel'
;
...
...
@@ -3004,7 +3013,7 @@
function
dec
(
that
,
methods
,
args
)
{
if
(
!
args
[
0
]
||
typeof
(
args
[
0
])
==
'object'
)
if
(
!
args
[
0
]
||
typeof
(
args
[
0
])
==
'object'
)
return
methods
.
init
.
apply
(
that
,
args
);
else
if
(
methods
[
args
[
0
]])
...
...
@@ -3020,7 +3029,8 @@
function
divAtt
(
top
,
left
,
zIndex
,
overf
)
{
return
{
'css'
:
{
return
{
'css'
:
{
position
:
'absolute'
,
top
:
top
,
left
:
left
,
...
...
@@ -3039,8 +3049,8 @@
b
=
a
*
a
*
a
,
c
=
t
*
t
*
t
;
return
point2D
(
Math
.
round
(
b
*
p1
.
x
+
3
*
t
*
a
*
a
*
p2
.
x
+
3
*
t
*
t
*
a
*
p3
.
x
+
c
*
p4
.
x
),
Math
.
round
(
b
*
p1
.
y
+
3
*
t
*
a
*
a
*
p2
.
y
+
3
*
t
*
t
*
a
*
p3
.
y
+
c
*
p4
.
y
));
return
point2D
(
Math
.
round
(
b
*
p1
.
x
+
3
*
t
*
a
*
a
*
p2
.
x
+
3
*
t
*
t
*
a
*
p3
.
x
+
c
*
p4
.
x
),
Math
.
round
(
b
*
p1
.
y
+
3
*
t
*
a
*
a
*
p2
.
y
+
3
*
t
*
t
*
a
*
p3
.
y
+
c
*
p4
.
y
));
}
...
...
@@ -3048,7 +3058,7 @@
function
rad
(
degrees
)
{
return
degrees
/
180
*
PI
;
return
degrees
/
180
*
PI
;
}
...
...
@@ -3056,7 +3066,7 @@
function
deg
(
radians
)
{
return
radians
/
PI
*
180
;
return
radians
/
PI
*
180
;
}
...
...
@@ -3064,7 +3074,7 @@
function
point2D
(
x
,
y
)
{
return
{
x
:
x
,
y
:
y
};
return
{
x
:
x
,
y
:
y
};
}
...
...
@@ -3075,7 +3085,7 @@
if
((
parts
=
/AppleWebkit
\/([
0-9
\.]
+
)
/i
.
exec
(
navigator
.
userAgent
)))
{
var
webkitVersion
=
parseFloat
(
parts
[
1
]);
return
(
webkitVersion
>
534.3
);
return
(
webkitVersion
>
534.3
);
}
else
{
return
true
;
}
...
...
@@ -3110,13 +3120,13 @@
function
getPrefix
()
{
var
vendorPrefixes
=
[
'Moz'
,
'Webkit'
,
'Khtml'
,
'O'
,
'ms'
],
var
vendorPrefixes
=
[
'Moz'
,
'Webkit'
,
'Khtml'
,
'O'
,
'ms'
],
len
=
vendorPrefixes
.
length
,
vendor
=
''
;
while
(
len
--
)
if
((
vendorPrefixes
[
len
]
+
'Transform'
)
in
document
.
body
.
style
)
vendor
=
'-'
+
vendorPrefixes
[
len
].
toLowerCase
()
+
'-'
;
vendor
=
'-'
+
vendorPrefixes
[
len
].
toLowerCase
()
+
'-'
;
return
vendor
;
...
...
@@ -3129,11 +3139,11 @@
var
t
,
el
=
document
.
createElement
(
'fakeelement'
),
transitions
=
{
'transition'
:
'transitionend'
,
'OTransition'
:
'oTransitionEnd'
,
'MSTransition'
:
'transitionend'
,
'MozTransition'
:
'transitionend'
,
'WebkitTransition'
:
'webkitTransitionEnd'
'transition'
:
'transitionend'
,
'OTransition'
:
'oTransitionEnd'
,
'MSTransition'
:
'transitionend'
,
'MozTransition'
:
'transitionend'
,
'WebkitTransition'
:
'webkitTransitionEnd'
};
for
(
t
in
transitions
)
{
...
...
@@ -3149,40 +3159,42 @@
var
j
,
cols
=
[];
if
(
vendor
==
'-webkit-'
)
{
if
(
vendor
==
'-webkit-'
)
{
for
(
j
=
0
;
j
<
numColors
;
j
++
)
cols
.
push
(
'color-stop('
+
colors
[
j
][
0
]
+
', '
+
colors
[
j
][
1
]
+
')'
);
for
(
j
=
0
;
j
<
numColors
;
j
++
)
cols
.
push
(
'color-stop('
+
colors
[
j
][
0
]
+
', '
+
colors
[
j
][
1
]
+
')'
);
obj
.
css
({
'background-image'
:
'-webkit-gradient(linear, '
+
p0
.
x
+
'% '
+
p0
.
y
+
'%,'
+
p1
.
x
+
'% '
+
p1
.
y
+
'%, '
+
cols
.
join
(
','
)
+
' )'
});
obj
.
css
({
'background-image'
:
'-webkit-gradient(linear, '
+
p0
.
x
+
'% '
+
p0
.
y
+
'%,'
+
p1
.
x
+
'% '
+
p1
.
y
+
'%, '
+
cols
.
join
(
','
)
+
' )'
});
}
else
{
p0
=
{
x
:
p0
.
x
/
100
*
obj
.
width
(),
y
:
p0
.
y
/
100
*
obj
.
height
()
};
p1
=
{
x
:
p1
.
x
/
100
*
obj
.
width
(),
y
:
p1
.
y
/
100
*
obj
.
height
()
};
p0
=
{
x
:
p0
.
x
/
100
*
obj
.
width
(),
y
:
p0
.
y
/
100
*
obj
.
height
()
};
p1
=
{
x
:
p1
.
x
/
100
*
obj
.
width
(),
y
:
p1
.
y
/
100
*
obj
.
height
()
};
var
dx
=
p1
.
x
-
p0
.
x
,
dy
=
p1
.
y
-
p0
.
y
,
var
dx
=
p1
.
x
-
p0
.
x
,
dy
=
p1
.
y
-
p0
.
y
,
angle
=
Math
.
atan2
(
dy
,
dx
),
angle2
=
angle
-
Math
.
PI
/
2
,
diagonal
=
Math
.
abs
(
obj
.
width
()
*
Math
.
sin
(
angle2
))
+
Math
.
abs
(
obj
.
height
()
*
Math
.
cos
(
angle2
)),
gradientDiagonal
=
Math
.
sqrt
(
dy
*
dy
+
dx
*
dx
),
corner
=
point2D
((
p1
.
x
<
p0
.
x
)
?
obj
.
width
()
:
0
,
(
p1
.
y
<
p0
.
y
)
?
obj
.
height
()
:
0
),
angle2
=
angle
-
Math
.
PI
/
2
,
diagonal
=
Math
.
abs
(
obj
.
width
()
*
Math
.
sin
(
angle2
))
+
Math
.
abs
(
obj
.
height
()
*
Math
.
cos
(
angle2
)),
gradientDiagonal
=
Math
.
sqrt
(
dy
*
dy
+
dx
*
dx
),
corner
=
point2D
((
p1
.
x
<
p0
.
x
)
?
obj
.
width
()
:
0
,
(
p1
.
y
<
p0
.
y
)
?
obj
.
height
()
:
0
),
slope
=
Math
.
tan
(
angle
),
inverse
=
-
1
/
slope
,
x
=
(
inverse
*
corner
.
x
-
corner
.
y
-
slope
*
p0
.
x
+
p0
.
y
)
/
(
inverse
-
slope
),
c
=
{
x
:
x
,
y
:
inverse
*
x
-
inverse
*
corner
.
x
+
corner
.
y
},
segA
=
(
Math
.
sqrt
(
Math
.
pow
(
c
.
x
-
p0
.
x
,
2
)
+
Math
.
pow
(
c
.
y
-
p0
.
y
,
2
)));
inverse
=
-
1
/
slope
,
x
=
(
inverse
*
corner
.
x
-
corner
.
y
-
slope
*
p0
.
x
+
p0
.
y
)
/
(
inverse
-
slope
),
c
=
{
x
:
x
,
y
:
inverse
*
x
-
inverse
*
corner
.
x
+
corner
.
y
},
segA
=
(
Math
.
sqrt
(
Math
.
pow
(
c
.
x
-
p0
.
x
,
2
)
+
Math
.
pow
(
c
.
y
-
p0
.
y
,
2
)));
for
(
j
=
0
;
j
<
numColors
;
j
++
)
cols
.
push
(
' '
+
colors
[
j
][
1
]
+
' '
+
((
segA
+
gradientDiagonal
*
colors
[
j
][
0
])
*
100
/
diagonal
)
+
'%'
);
for
(
j
=
0
;
j
<
numColors
;
j
++
)
cols
.
push
(
' '
+
colors
[
j
][
1
]
+
' '
+
((
segA
+
gradientDiagonal
*
colors
[
j
][
0
])
*
100
/
diagonal
)
+
'%'
);
obj
.
css
({
'background-image'
:
vendor
+
'linear-gradient('
+
(
-
angle
)
+
'rad,'
+
cols
.
join
(
','
)
+
')'
});
obj
.
css
({
'background-image'
:
vendor
+
'linear-gradient('
+
(
-
angle
)
+
'rad,'
+
cols
.
join
(
','
)
+
')'
});
}
}
...
...
@@ -3220,9 +3232,9 @@
function
findPos
(
obj
)
{
var
offset
=
{
top
:
0
,
left
:
0
};
var
offset
=
{
top
:
0
,
left
:
0
};
do
{
do
{
offset
.
left
+=
obj
.
offsetLeft
;
offset
.
top
+=
obj
.
offsetTop
;
}
while
((
obj
=
obj
.
offsetParent
));
...
...
@@ -3235,18 +3247,18 @@
// IE9 is the only browser that does not support hard pages
function
hasHardPage
()
{
return
(
navigator
.
userAgent
.
indexOf
(
'MSIE 9.0'
)
==
-
1
);
return
(
navigator
.
userAgent
.
indexOf
(
'MSIE 9.0'
)
==
-
1
);
}
// Request an animation
window
.
requestAnim
=
(
function
()
{
window
.
requestAnim
=
(
function
()
{
return
window
.
requestAnimationFrame
||
window
.
webkitRequestAnimationFrame
||
window
.
mozRequestAnimationFrame
||
window
.
oRequestAnimationFrame
||
window
.
msRequestAnimationFrame
||
function
(
callback
)
{
function
(
callback
)
{
window
.
setTimeout
(
callback
,
1000
/
60
);
};
...
...
@@ -3256,28 +3268,28 @@
$
.
extend
(
$
.
fn
,
{
flip
:
function
()
{
flip
:
function
()
{
return
dec
(
$
(
this
[
0
]),
flipMethods
,
arguments
);
},
turn
:
function
()
{
turn
:
function
()
{
return
dec
(
$
(
this
[
0
]),
turnMethods
,
arguments
);
},
transform
:
function
(
transform
,
origin
)
{
transform
:
function
(
transform
,
origin
)
{
var
properties
=
{};
if
(
origin
)
properties
[
vendor
+
'transform-origin'
]
=
origin
;
properties
[
vendor
+
'transform-origin'
]
=
origin
;
properties
[
vendor
+
'transform'
]
=
transform
;
properties
[
vendor
+
'transform'
]
=
transform
;
return
this
.
css
(
properties
);
},
animatef
:
function
(
point
)
{
animatef
:
function
(
point
)
{
var
data
=
this
.
data
();
...
...
@@ -3294,7 +3306,7 @@
animating
=
true
,
that
=
this
,
time
=
(
new
Date
()).
getTime
(),
frame
=
function
()
{
frame
=
function
()
{
if
(
!
data
.
effect
||
!
animating
)
return
;
...
...
@@ -3305,9 +3317,9 @@
for
(
var
i
=
0
;
i
<
len
;
i
++
)
v
.
push
(
data
.
effect
.
easing
(
1
,
timeDiff
,
point
.
from
[
i
],
diff
[
i
],
point
.
duration
));
point
.
frame
((
len
==
1
)
?
v
[
0
]
:
v
);
point
.
frame
((
len
==
1
)
?
v
[
0
]
:
v
);
if
(
timeDiff
==
point
.
duration
)
{
if
(
timeDiff
==
point
.
duration
)
{
delete
data
[
'effect'
];
that
.
data
(
data
);
if
(
point
.
complete
)
...
...
@@ -3321,11 +3333,11 @@
diff
.
push
(
point
.
to
[
i
]
-
point
.
from
[
i
]);
data
.
effect
=
$
.
extend
({
stop
:
function
()
{
stop
:
function
()
{
animating
=
false
;
},
easing
:
function
(
x
,
t
,
b
,
c
,
data
)
{
return
c
*
Math
.
sqrt
(
1
-
(
t
=
t
/
data
-
1
)
*
t
)
+
b
;
return
c
*
Math
.
sqrt
(
1
-
(
t
=
t
/
data
-
1
)
*
t
)
+
b
;
}
},
point
);
...
...
@@ -3349,4 +3361,4 @@
$
.
cssTransitionEnd
=
getTransitionEnd
;
$
.
findPos
=
findPos
;
})(
jQuery
);
\ No newline at end of file
})(
jQuery
);
\ No newline at end of file
src/components.d.ts
浏览文件 @
e5f127db
...
...
@@ -10,10 +10,12 @@ declare module 'vue' {
export
interface
GlobalComponents
{
BookMarks
:
typeof
import
(
'./components/GuideMobile/bookMarks.vue'
)[
'default'
]
BookReader
:
typeof
import
(
'./components/BookReader/index.vue'
)[
'default'
]
copy
:
typeof
import
(
'./components/BookReader/index copy.vue'
)[
'default'
]
ElButton
:
typeof
import
(
'element-plus/es'
)[
'ElButton'
]
ElCol
:
typeof
import
(
'element-plus/es'
)[
'ElCol'
]
ElDrawer
:
typeof
import
(
'element-plus/es'
)[
'ElDrawer'
]
ElHeader
:
typeof
import
(
'element-plus/es'
)[
'ElHeader'
]
ElImage
:
typeof
import
(
'element-plus/es'
)[
'ElImage'
]
ElRow
:
typeof
import
(
'element-plus/es'
)[
'ElRow'
]
FileUpload
:
typeof
import
(
'./components/FileUpload.vue'
)[
'default'
]
Guide
:
typeof
import
(
'./components/GuideMobile/guide.vue'
)[
'default'
]
...
...
src/components/BookReader/index.vue
浏览文件 @
e5f127db
...
...
@@ -49,9 +49,7 @@
}%`,
}"
@click="handleSmallImageClick(smallImage, page.page_num)"
>
<!--
<img
:src=
"smallImage.url"
:alt=
"`小图 $
{imgIndex + 1}`" class="small-image" /> -->
</div>
>
</div>
</div>
</div>
</div>
...
...
@@ -122,7 +120,6 @@
<
script
setup
>
import
$
from
"jquery"
;
import
"turn.js"
;
// import * as 'turn' from '/public/js/turn'
import
{
ref
,
onMounted
,
onUnmounted
,
watch
,
nextTick
,
computed
}
from
"vue"
;
import
VueEasyLightbox
from
"vue-easy-lightbox"
;
import
GuideMobile
from
"../GuideMobile/index.vue"
;
...
...
@@ -882,22 +879,22 @@ const showGuide = () => {
transform-style
:
preserve-3d
;
}
.
magazine
:
:
after
{
content
:
""
;
position
:
absolute
;
top
:
0
;
left
:
50%
;
width
:
1px
;
height
:
100%
;
background
:
linear-gradient
(
to
bottom
,
rgba
(
0
,
0
,
0
,
0
.1
)
0%
,
rgba
(
0
,
0
,
0
,
0
.2
)
50%
,
rgba
(
0
,
0
,
0
,
0
.1
)
100%
);
z-index
:
10
;
pointer-events
:
none
;
}
//
.magazine::after {
//
content: "";
//
position: absolute;
//
top: 0;
//
left: 50%;
//
width: 1px;
//
height: 100%;
//
background: linear-gradient(
//
to bottom,
//
rgba(0, 0, 0, 0.1) 0%,
//
rgba(0, 0, 0, 0.2) 50%,
//
rgba(0, 0, 0, 0.1) 100%
//
);
//
z-index: 10;
//
pointer-events: none;
//
}
.page
{
background-color
:
white
;
...
...
src/router/index.js
浏览文件 @
e5f127db
...
...
@@ -15,10 +15,6 @@ export const constantRoutes = [
path
:
'/detail/:id'
,
component
:
()
=>
import
(
'@/views/detail/index.vue'
),
},
{
path
:
'/test'
,
component
:
()
=>
import
(
'@/views/test/index.vue'
),
},
{
path
:
'/:pathMatch(.*)*'
,
component
:
()
=>
import
(
'@/views/error/404.vue'
),
...
...
src/views/detail/index.vue
浏览文件 @
e5f127db
...
...
@@ -39,7 +39,8 @@ async function loadData(id) {
}
function
goBack
()
{
router
.
go
(
-
1
);
// router.go(-1);
router
.
push
(
"/"
);
}
onMounted
(()
=>
{
const
{
id
}
=
route
.
params
;
...
...
src/views/index/index.vue
浏览文件 @
e5f127db
<
template
>
<div
class=
"book-list-container"
>
<!--
<van-nav-bar
title=
"微方志"
class=
"nav-bar"
>
<template
#
right
>
<van-icon
name=
"search"
size=
"20"
/>
</
template
>
</van-nav-bar>
-->
<el-header
class=
"header"
>
微方志
</el-header>
<
!-- <van-row
class="book-card-list">
<
van-col
span="8
"
<
div
class=
"book-card-list"
>
<
div
class=
"book-card
"
v-for=
"(book, index) in books"
:key="book.book_id + index"
shadow=
"hover"
@
click=
"openBook(book)"
>
<div class="book-card" shadow="hover" @click="openBook(book)">
<div
class=
"book-cover"
></div>
<div
class=
"book-name"
>
{{
book
.
name
}}
</div>
</div>
</van-col>
</van-row> -->
<el-row
:gutter=
"16"
class=
"book-card-list"
>
<el-col
v-for=
"(book, index) in books"
:key=
"book.book_id + index"
:span=
"8"
:lg=
"4"
>
<div
class=
"book-card"
shadow=
"hover"
@
click=
"openBook(book)"
>
<div
class=
"book-cover"
></div>
<div
class=
"book-name"
>
{{ book.name }}
</div>
</div>
</el-col>
</el-row>
</div>
</
template
>
...
...
@@ -56,7 +37,6 @@ async function loadData() {
}
function
openBook
(
book
)
{
console
.
log
(
book
);
const
query
=
{
title
:
book
.
name
,
};
...
...
@@ -85,30 +65,36 @@ onMounted(() => {
background-image
:
url(@/assets/images/5.jpg)
;
background-size
:
cover
;
.book-card-list
{
padding
:
50px
13%
;
padding
:
30px
8%
;
display
:
grid
;
grid-template-columns
:
repeat
(
auto-fill
,
minmax
(
160px
,
1fr
));
gap
:
20px
;
.book-card
{
border-radius
:
8px
;
cursor
:
pointer
;
transition
:
all
ease
0
.3s
;
transition
:
all
0
.3s
ease
;
&
:hover
{
transform
:
translateY
(
-10px
);
transform
:
translateY
(
-5px
);
box-shadow
:
0
6px
12px
rgba
(
0
,
0
,
0
,
0
.1
);
}
.book-cover
{
background-image
:
url(@/assets/images/default2.jpg)
;
background-size
:
cover
;
aspect-ratio
:
2
/
3
;
border-radius
:
8px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
font-family
:
楷体
;
font-size
:
20px
;
margin-bottom
:
10px
;
width
:
150px
;
/* 固定宽度 */
height
:
200px
;
/* 高度按比例计算(2:3) */
display
:
fle
x
;
justify-content
:
center
;
align-items
:
center
;
box-sizing
:
border-bo
x
;
padding
:
10px
;
}
.book-name
{
font-size
:
16p
x
;
text-align
:
center
;
@media
(
min-width
:
768px
)
{
font-size
:
18p
x
;
}
}
}
}
...
...
@@ -116,23 +102,9 @@ onMounted(() => {
@media
(
max-width
:
768px
)
{
.book-card-list
{
padding
:
30px
;
.book-card
{
border-radius
:
8px
;
.book-cover
{
background-color
:
rgba
(
65
,
184
,
131
,
0
.4
);
padding
:
50px
10px
;
border-radius
:
8px
;
display
:
flex
;
justify-content
:
center
;
font-family
:
楷体
;
font-size
:
18px
;
margin-bottom
:
10px
;
width
:
150px
;
/* 固定宽度 */
height
:
150px
;
/* 高度按比例计算(2:3) */
}
}
padding
:
20px
;
grid-template-columns
:
repeat
(
auto-fill
,
minmax
(
120px
,
1fr
));
gap
:
15px
;
}
}
</
style
>
src/views/test/index.vue
deleted
100644 → 0
浏览文件 @
343b9b77
<
template
>
<book-reader-v2
/>
</
template
>
<
script
lang=
"ts"
setup
></
script
>
<
style
lang=
"scss"
scoped
></
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论