Skip to content

Commit d522e4a

Browse files
committed
Add settings, downgrade pdfjs
1 parent 16ced58 commit d522e4a

File tree

11 files changed

+299
-27
lines changed

11 files changed

+299
-27
lines changed

package-lock.json

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"@rollup/plugin-node-resolve": "^11.2.1",
2929
"core-js": "^3.11.0",
3030
"fs-extra": "^9.1.0",
31-
"pdfjs-dist": "^2.7.570",
31+
"pdfjs-dist": "2.5.207",
3232
"prettier": "^2.2.1",
3333
"prettier-plugin-svelte": "^2.2.0",
3434
"remarkable": "^2.0.1",

rollup.config.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import {copySync} from "fs-extra"
1010
import path from "path"
1111
import babel from "@rollup/plugin-babel"
1212

13-
const pdfJsWorker = path.resolve(__dirname, "node_modules/pdfjs-dist/es5/build/pdf.worker.min.js")
14-
const pdfJs = path.resolve(__dirname, "node_modules/pdfjs-dist/es5/build/pdf.min.js")
13+
const pdfJsWorker = path.resolve(__dirname, "node_modules/pdfjs-dist/es5/build/pdf.worker.js")
14+
// const pdfJs = path.resolve(__dirname, "node_modules/pdfjs-dist/es5/build/pdf.js")
1515
// const pdfJsWorker = path.resolve(__dirname, "node_modules/pdfjs-dist/build/pdf.worker.min.js")
1616
// const pdfJs = path.resolve(__dirname, "node_modules/pdfjs-dist/build/pdf.min.js")
1717

@@ -90,15 +90,15 @@ const copyToDist = () => ({
9090
})
9191

9292
export default {
93-
external: ["tizen", pdfJs, pdfJsWorker, "webapis"],
93+
external: ["tizen", pdfJsWorker, "webapis"],
9494
input: "src/index.js",
9595
output: {
9696
file: "build/bundle.js",
9797
format: "iife",
9898
name: "app",
9999
globals: {
100100
[pdfJsWorker]: "PdfjsWorker",
101-
[pdfJs]: "Pdfjs",
101+
// [pdfJs]: "Pdfjs",
102102
"tizen": "tizen",
103103
"webapis": "webapis"
104104
}

src/components/GenericList.svelte

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
<script>
2+
import {createEventDispatcher} from "svelte"
3+
import {scrollTo} from "../utils"
4+
5+
export let title
6+
export let items
7+
export let height = 360
8+
export let itemsShow = 3
9+
/**
10+
* Выбранный элемент
11+
* @type {number}
12+
*/
13+
export let chosen = 0
14+
15+
const dispatch = createEventDispatcher()
16+
17+
let itemHeight = height / itemsShow
18+
19+
/**
20+
* ID таймаута скролла
21+
* @type {number}
22+
*/
23+
let scrollTimeout
24+
25+
/**
26+
* ID таймаута выбора элемента
27+
* @type {number}
28+
*/
29+
let selectTimeout
30+
let containerNode
31+
32+
/**
33+
* Предыдущий выбранный элемент. Нужен чтобы понимать произошли ли изменения
34+
* @type {number}
35+
*/
36+
let lastChosen = 0
37+
38+
function scroll(e) {
39+
let scrollTop = e.target.scrollTop
40+
let new_chosen =
41+
Math.round((scrollTop + height / 2 + itemHeight / 2) / itemHeight) - 2
42+
43+
if (new_chosen !== chosen) {
44+
lastChosen = chosen
45+
chosen = new_chosen
46+
if (selectTimeout) clearTimeout(selectTimeout)
47+
selectTimeout = setTimeout(() => {
48+
dispatch("select", {index: chosen})
49+
}, 500)
50+
}
51+
52+
if (scrollTimeout) clearTimeout(scrollTimeout)
53+
scrollTimeout = setTimeout(() => {
54+
let scroll = itemHeight * chosen
55+
scrollTo(containerNode, 0, scroll)
56+
}, 300)
57+
}
58+
59+
function bezelRotate(e) {
60+
if (e.detail.direction === "CW" && chosen < items.length - 1) {
61+
chosen = chosen + 1
62+
scrollTo(containerNode, 0, itemHeight * chosen)
63+
}
64+
if (e.detail.direction === "CCW" && chosen > 0) {
65+
chosen = chosen - 1
66+
scrollTo(containerNode, 0, itemHeight * chosen)
67+
}
68+
}
69+
</script>
70+
71+
<svelte:window on:rotarydetent={bezelRotate} />
72+
73+
<div
74+
bind:this={containerNode}
75+
class="cont"
76+
on:scroll={scroll}
77+
style="height: {height}px;"
78+
>
79+
<div class="item fake-item" style="height: {itemHeight}px;">
80+
{#if title}
81+
<div class="title" style="color: #14b6ff">{title}</div>
82+
{/if}
83+
</div>
84+
<!-- TODO: добавить id -->
85+
{#each items as item, i (item.title || item)}
86+
<div
87+
on:click={() => dispatch("click", item)}
88+
class:active={chosen === i}
89+
class="item"
90+
style="height: {itemHeight}px;"
91+
>
92+
<slot {item} active={chosen === i} />
93+
</div>
94+
{/each}
95+
<div class="fake-item" style="height: {itemHeight}px;" />
96+
</div>
97+
98+
<style>
99+
.item {
100+
text-align: center;
101+
margin: 0;
102+
box-sizing: border-box;
103+
border-radius: 99px;
104+
transition: background ease-in-out 0.5s;
105+
justify-content: center;
106+
display: flex;
107+
flex-direction: column;
108+
}
109+
110+
.cont {
111+
overflow-y: scroll;
112+
scroll-behavior: smooth;
113+
}
114+
115+
.active {
116+
background: #3a3a3a;
117+
}
118+
119+
.title {
120+
font-weight: bold;
121+
font-size: 2em;
122+
}
123+
124+
.active .title {
125+
font-size: 2.2em;
126+
}
127+
128+
.subtitle {
129+
font-size: 1.8em;
130+
/* TODO: сделать плавающий текст */
131+
max-height: 72px;
132+
overflow: hidden;
133+
word-break: break-all;
134+
}
135+
136+
.title {
137+
max-width: 100%;
138+
margin: 0 auto;
139+
white-space: nowrap;
140+
overflow: hidden;
141+
}
142+
143+
.title span {
144+
display: inline-block;
145+
}
146+
147+
.title :global(span.animated) {
148+
animation: marquee 10s ease-in-out alternate infinite;
149+
}
150+
151+
@keyframes marquee {
152+
0% {
153+
transform: translateX(20px);
154+
}
155+
100% {
156+
transform: translateX(calc(-100% + 340px));
157+
}
158+
}
159+
</style>

src/components/List.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818
let itemHeight = height / itemsShow
1919
2020
/**
21-
* ID таймоута скролла
21+
* ID таймаута скролла
2222
* @type {number}
2323
*/
2424
let scrollTimeout
2525
2626
/**
27-
* ID таймоута выбора элемента
27+
* ID таймаута выбора элемента
2828
* @type {number}
2929
*/
3030
let selectTimeout

src/constants.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ export const defaultConfigValues = {
1212
txtFontSize: "16",
1313
txtTheme: "white",
1414
pdfAction: bezelActions.scale,
15+
zoomButtons: "",
16+
supportBezel:
17+
isDev ||
18+
tizen.systeminfo.getCapability(
19+
"http://tizen.org/feature/input.rotating_bezel"
20+
)
21+
? "true"
22+
: "",
1523
}
1624

1725
export const pages = {
@@ -84,9 +92,3 @@ export const bezelActionsButtons = {
8492
}
8593

8694
export const isDev = is_dev
87-
88-
export const supportBezel =
89-
isDev ||
90-
tizen.systeminfo.getCapability(
91-
"http://tizen.org/feature/input.rotating_bezel"
92-
)

src/pages/MainScreen.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
88
let pagesList = [
99
{title: "Open", subtitle: "Open a load file", pageId: pages.filesList},
10-
// {title: "Settings", subtitle: "Bezel action", pageId: pages.settings},
10+
{title: "Settings", subtitle: "Bezel action", pageId: pages.settings},
1111
{title: "Help", subtitle: "App description", pageId: pages.help},
1212
]
1313
if ($configStore.lastFile) {

src/pages/PdfView.svelte

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import {configStore, docStore} from "../store"
33
import {onMount} from "svelte"
44
import InViewSettings from "../components/InViewSettings.svelte"
5-
import {bezelActions, bezelActionsButtons, supportBezel} from "../constants"
5+
import {bezelActions, bezelActionsButtons} from "../constants"
66
import {bezelEventScroll} from "../utils"
77
import InViewSettingsBlock from "../components/InViewSettingsBlock.svelte"
88
@@ -91,22 +91,22 @@
9191
<div
9292
bind:this={containerNode}
9393
class="container"
94-
class:bottom-padding={!supportBezel}
94+
class:bottom-padding={!$configStore.supportBezel}
9595
>
9696
<div class="buttons-block top">
9797
<button on:click={backwards} style="text-align: right;">&lt</button>
9898
<span>{currentPage}/{pagesCount}</span>
9999
<button on:click={towards} style="text-align: left;">&gt</button>
100100
</div>
101101
<canvas bind:this={canvas} />
102-
{#if !supportBezel}
102+
{#if $configStore.zoomButtons}
103103
<div class="buttons-block bottom">
104104
<button on:click={scaleDown} style="text-align: right;">-</button>
105105
<button on:click={scaleUp} style="text-align: left;">+</button>
106106
</div>
107107
{/if}
108108
</div>
109-
{#if supportBezel}
109+
{#if $configStore.supportBezel}
110110
<InViewSettings>
111111
<InViewSettingsBlock
112112
bind:current={pdfAction}

0 commit comments

Comments
 (0)