@tenjuu99/blog 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/dev-server ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'child_process'
4
+ import { srcDir, pageDir, serverDir, helperDir } from '../lib/dir.js'
5
+ import { watchers, watch } from '../lib/watcher.js'
6
+ import generate from '../lib/generate.js'
7
+ import path from 'path'
8
+ import { fileURLToPath } from 'url';
9
+
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const libDir = path.dirname(__filename) + '/../lib/'
12
+
13
+ watchers.push({
14
+ paths: srcDir,
15
+ watchOptions: {
16
+ ignored: [pageDir, serverDir, helperDir],
17
+ },
18
+ callback: generate
19
+ })
20
+ watchers.push({
21
+ paths: pageDir,
22
+ callback: generate,
23
+ watchOptions: {
24
+ ignoreInitial: true
25
+ },
26
+ event: ['change', 'unlink', 'add']
27
+ })
28
+ watchers.push({
29
+ paths: [serverDir, helperDir, libDir],
30
+ callback: () => {
31
+ childProcess.kill('SIGINT')
32
+ childProcess = proceed()
33
+ console.error('restarting')
34
+ }
35
+ })
36
+ watch()
37
+
38
+ let childProcess = null
39
+
40
+ const proceed = () => {
41
+ const child = spawn('node', ['bin/server'])
42
+ console.log(`start process. PID(parent): ${process.pid}, PID(child): ${child.pid}`)
43
+
44
+ child.stdout.on('data', (data) => {
45
+ console.log(data.toString().split('\n').filter(v => v).join('\n'))
46
+ })
47
+ child.stderr.on('data', (data) => {
48
+ console.log(data.toString().split('\n').filter(v => v).join('\n'))
49
+ })
50
+ child.on('exit', (code, signal) => {
51
+ console.error(`process exit: ${code}, SIGNAL: ${signal}`);
52
+ })
53
+
54
+ return child
55
+ }
56
+
57
+ childProcess = proceed()
package/bin/new CHANGED
@@ -24,7 +24,8 @@ echo '{
24
24
  "src_dir": "src",
25
25
  "dist_dir": "dist",
26
26
  "distribute_raw": "image,js",
27
- "helper": "helper/index.js"
27
+ "helper": "helper/index.js",
28
+ "editor_enable": true
28
29
  }' > "$(pwd)/blog.json"
29
30
  echo "create blog.json"
30
31
 
package/bin/server CHANGED
@@ -1,26 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import server from '../lib/server.js'
4
- import { srcDir, pageDir } from '../lib/dir.js'
5
- import { watchers, watch } from '../lib/watcher.js'
6
4
  import generate from '../lib/generate.js'
7
5
 
8
- watchers.push({
9
- paths: srcDir,
10
- watchOptions: {
11
- ignored: pageDir
12
- },
13
- callback: generate
14
- })
15
- watchers.push({
16
- paths: pageDir,
17
- callback: generate,
18
- watchOptions: {
19
- ignoreInitial: true
20
- },
21
- event: ['change', 'unlink', 'add']
22
- })
23
- watch()
24
6
  generate()
25
-
26
7
  server().listen(process.env.PORT || 8000)
package/lib/dir.js CHANGED
@@ -8,6 +8,7 @@ const templateDir = `${srcDir}/template`
8
8
  const cssDir = `${srcDir}/css`
9
9
  const cacheDir = `${rootDir}/.cache`
10
10
  const serverDir = `${srcDir}/server`
11
+ const helperDir = `${srcDir}/helper`
11
12
 
12
13
  export {
13
14
  rootDir,
@@ -17,5 +18,6 @@ export {
17
18
  templateDir,
18
19
  cssDir,
19
20
  cacheDir,
20
- serverDir
21
+ serverDir,
22
+ helperDir
21
23
  }
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@tenjuu99/blog",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "blog template",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "dev": "node bin/server",
7
+ "dev": "node bin/dev-server",
8
+ "server": "node bin/server",
8
9
  "generate": "node bin/generate",
9
10
  "test": "echo \"Error: no test specified\" && exit 1"
10
11
  },
11
12
  "bin": {
12
13
  "generate": "bin/generate",
13
- "server": "bin/server",
14
+ "server": "bin/dev-server",
14
15
  "create-blog": "bin/new"
15
16
  },
16
17
  "author": "AmashigeSeiji",
@@ -1,13 +1,19 @@
1
1
  body {
2
2
  background: #fafafa;
3
- --container-max-width: 90%;
4
- --container-min-width: 90%;
5
- --container-width: 90%;
3
+ --container-max-width: 100%;
4
+ --container-min-width: 100%;
5
+ --container-width: 100%;
6
6
  height: 100vh;
7
7
  }
8
8
  main {
9
9
  height: 100%;
10
10
  margin: 0 auto;
11
+ display: flex;
12
+ flex-direction: row;
13
+ justify-content: flex-start;
14
+ }
15
+ main.container {
16
+ padding: 0;
11
17
  }
12
18
  .textareaAndPreview {
13
19
  display: flex;
@@ -22,9 +28,19 @@ main {
22
28
  .editor {
23
29
  display: flex;
24
30
  flex-direction: column;
25
- padding: 15px 0;
31
+ padding: 15px 20px;
26
32
  justify-content:center;
27
33
  height: 100%;
34
+ /* width: 100%; */
35
+ margin: 0 auto;
36
+ position: relative;
37
+ left: 0;
38
+ flex-basis: 100%;
39
+ transition: flex-basis 0.3s;
40
+ }
41
+ .sidebar-close .editor {
42
+ flex-basis: 90%;
43
+ transition: flex-basis 0.3s;
28
44
  }
29
45
  #editorTextArea {
30
46
  resize: none;
@@ -61,43 +77,45 @@ form select {
61
77
  .sidebar {
62
78
  display: flex;
63
79
  justify-content: space-between;
64
- width: 50vw;
80
+ width: 300px;
65
81
  overflow: hidden;
66
- position: absolute;
82
+ left: 0;
67
83
  background: rgba(104, 117, 154);
68
84
  height: 100%;
69
85
  padding: 0;
70
- box-shadow: 3px 13px 13px rgba(50, 50, 50, 0.5);
71
- left: 0;
72
- transition: left 0.3s, width 0.3s;
73
86
  overflow-y: hidden;
87
+ transition: left 0.3s, flex-basis 0.3s;
88
+ flex-basis: 300px;
89
+ position: relative;
90
+ }
91
+ .sidebar-close .sidebar {
92
+ left: -290px;
93
+ transition: left 0.3s, flex-basis 0.3s;
94
+ flex-basis: 0;
74
95
  }
75
- .sidebar.close {
76
- left: -48vw;
77
- transition: left 0.3s, width 0.3s;
96
+ .sidebar ul {
97
+ padding: 0;
98
+ margin: 0 0 0 20px;
99
+ left: 0;
100
+ transition: left 0.3s;
101
+ min-width: 180px;
102
+ max-width: 180px;
103
+ }
104
+ .sidebar-close .sidebar ul {
105
+ position: absolute;
106
+ left: -290px;
107
+ transition: left 0.3s;
78
108
  }
79
109
  @media screen and (min-width: 1100px) {
80
- .sidebar {
81
- width: 40vw;
82
- }
83
- .sidebar.close {
84
- left: -39vw;
85
- }
86
110
  }
87
111
  @media screen and (min-width: 1400px) {
88
- .sidebar {
89
- width: 30vw;
90
- }
91
- .sidebar.close {
92
- left: -29vw;
93
- }
94
112
  }
95
113
  @media screen and (max-width: 600px) {
96
114
  .sidebar {
97
- width: 80vw;
115
+ flex-basis: 80%;
98
116
  }
99
117
  .sidebar.close {
100
- left: -77vw;
118
+ flex-basis: 5%;
101
119
  }
102
120
  }
103
121
  .sidebar li {
@@ -110,7 +128,11 @@ form select {
110
128
  cursor: pointer;
111
129
  width: 20px;
112
130
  height: 100%;
113
- position: relative;
131
+ background: rgba(104, 117, 154);
132
+ }
133
+ .sidebar-close .sidebar-toggle {
134
+ position: fixed;
135
+ left: 0;
114
136
  }
115
137
  .sidebar-toggle:hover:after {
116
138
  position: absolute;
@@ -125,6 +147,24 @@ form select {
125
147
  width: 100%;
126
148
  display: block;
127
149
  }
150
+ main.container {
151
+ padding: 0 5px;
152
+ }
153
+ .sidebar {
154
+ position: fixed;
155
+ width: 80vw;
156
+ z-index: 3;
157
+ right: 0;
158
+ left: unset;
159
+ transition: right .3s, width .3s;
160
+ }
161
+ .sidebar-close .sidebar {
162
+ width: 0;
163
+ position: fixed;
164
+ right: -300px;
165
+ left: unset;
166
+ transition: right .3s, width .3s;
167
+ }
128
168
  .editor {
129
169
  padding: 15px 0;
130
170
  }
@@ -134,4 +174,64 @@ form select {
134
174
  #editorTextArea {
135
175
  flex-basis: 100%;
136
176
  }
177
+ .sidebar-toggle {
178
+ display: none;
179
+ }
180
+ }
181
+ /**
182
+ * hamburger
183
+ */
184
+ .hamburger-menu {
185
+ display: none;
186
+ }
187
+ @media screen and (max-width: 600px) {
188
+ .hamburger-menu {
189
+ display: block;
190
+ }
191
+ .menu-btn {
192
+ position: fixed;
193
+ top: 10px;
194
+ right: 10px;
195
+ display: flex;
196
+ height: 40px;
197
+ width: 40px;
198
+ justify-content: center;
199
+ align-items: center;
200
+ z-index: 90;
201
+ /* background-color: #3584bb; */
202
+ }
203
+ .menu-btn span,
204
+ .menu-btn span:before,
205
+ .menu-btn span:after {
206
+ content: '';
207
+ display: block;
208
+ height: 3px;
209
+ width: 25px;
210
+ border-radius: 3px;
211
+ background-color: #ffffff;
212
+ position: absolute;
213
+ transition: transform 0.3s, background-color 0.3s;
214
+ }
215
+ .menu-btn span:before {
216
+ bottom: 8px;
217
+ }
218
+ .menu-btn span:after {
219
+ top: 8px;
220
+ }
221
+ #menu-btn-check:checked ~ .menu-btn span {
222
+ background-color: rgba(255, 255, 255, 0);/*メニューオープン時は真ん中の線を透明にする*/
223
+ }
224
+ #menu-btn-check:checked ~ .menu-btn span::before {
225
+ bottom: 0;
226
+ transform: rotate(45deg);
227
+ transition: transform 0.3s, background-color 0.3s;
228
+ }
229
+ #menu-btn-check:checked ~ .menu-btn span::after {
230
+ top: 0;
231
+ transform: rotate(-45deg);
232
+ transition: transform 0.3s, background-color 0.3s;
233
+ }
234
+ #menu-btn-check {
235
+ display: none;
236
+ }
137
237
  }
@@ -43,7 +43,6 @@ body {
43
43
  */
44
44
  header {
45
45
  padding: 10px 0;
46
- border-bottom: 0.5px solid #ccc;
47
46
  background: var(--header-bg);
48
47
  }
49
48
 
@@ -67,7 +67,7 @@ const onloadFunction = async (e) => {
67
67
  if (json.preview) {
68
68
  const iframe = document.createElement('iframe')
69
69
  iframe.setAttribute('srcdoc', json.preview)
70
- iframe.setAttribute('sandbox', '')
70
+ iframe.setAttribute('sandbox', 'allow-same-origin allow-scripts')
71
71
  const old = preview.querySelector('iframe')
72
72
  if (!old) {
73
73
  preview.appendChild(iframe)
@@ -87,10 +87,16 @@ const onloadFunction = async (e) => {
87
87
 
88
88
  const sidebarToggle = (e) => {
89
89
  const sidebar = document.querySelector('.sidebar')
90
+ const main = document.querySelector('main')
90
91
  const toggle = sidebar.querySelector('.sidebar-toggle')
91
92
  toggle.addEventListener('click', (e) => {
92
93
  e.preventDefault()
93
- sidebar.classList.toggle('close')
94
+ main.classList.toggle('sidebar-close')
95
+ })
96
+ const hamburger = document.querySelector('.hamburger-menu input[type="checkbox"]')
97
+ console.log(hamburger)
98
+ hamburger.addEventListener('change', (e) => {
99
+ main.classList.toggle('sidebar-close')
94
100
  })
95
101
  }
96
102
  document.addEventListener('DOMContentLoaded', (event) => {
@@ -14,8 +14,13 @@
14
14
  <p class="container">
15
15
  <a href="/">{{SITE_NAME}}/Editor</a>
16
16
  </p>
17
+ <div class="hamburger-menu">
18
+ <input type="checkbox" id="menu-btn-check">
19
+ <label for="menu-btn-check" class="menu-btn"><span></span></label>
20
+ </div>
17
21
  </header>
18
- <div class="sidebar close">
22
+ <main class="container sidebar-close">
23
+ <div class="sidebar">
19
24
  <ul>
20
25
  <script type="ssg">
21
26
  return helper.readIndex().map(p => {
@@ -25,7 +30,6 @@
25
30
  </ul>
26
31
  <div class="sidebar-toggle">&nbsp;</div>
27
32
  </div>
28
- <main class="container">
29
33
  <form action="/editor" class="editor" method="post" id="editor">
30
34
  <input id="inputFileName" name="inputFileName" type="text" value="" placeholder="sample.md">
31
35
  <select id="selectDataFile" name="selectDataFile">