@canopycanopycanopy/b-ber-tasks 1.2.16 → 2.0.2
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/dist/clean/index.js +0 -15
- package/dist/container/index.js +1 -20
- package/dist/copy/index.js +2 -20
- package/dist/cover/index.js +36 -91
- package/dist/deploy/index.js +22 -63
- package/dist/epub/index.js +0 -12
- package/dist/footnotes/index.js +0 -27
- package/dist/generate/index.js +5 -32
- package/dist/index.js +0 -52
- package/dist/init/index.js +4 -29
- package/dist/inject/index.js +3 -31
- package/dist/loi/index.js +27 -74
- package/dist/mobi/index.js +8 -17
- package/dist/mobi/mobi-css.js +2 -39
- package/dist/opf/ManifestAndMetadata.js +18 -35
- package/dist/opf/Navigation.js +28 -82
- package/dist/opf/Opf.js +3 -20
- package/dist/opf/helpers.js +5 -20
- package/dist/opf/index.js +0 -10
- package/dist/pdf/index.js +3 -29
- package/dist/reader/index.js +26 -66
- package/dist/render/index.js +2 -28
- package/dist/sample/index.js +0 -6
- package/dist/sass/index.js +51 -85
- package/dist/scripts/index.js +0 -24
- package/dist/serialize.js +5 -18
- package/dist/serve/index.js +44 -61
- package/dist/validate/index.js +4 -22
- package/dist/web/Template.js +0 -21
- package/dist/web/index.js +42 -139
- package/dist/xml/index.js +0 -30
- package/package.json +13 -12
package/dist/clean/index.js
CHANGED
|
@@ -1,40 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
14
|
-
|
|
15
10
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
16
|
-
|
|
17
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
18
|
-
|
|
19
12
|
var _path = _interopRequireDefault(require("path"));
|
|
20
|
-
|
|
21
13
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
22
|
-
|
|
23
14
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
24
|
-
|
|
25
15
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
26
|
-
|
|
27
16
|
// Remove an ebook's output directory and outdated builds
|
|
28
17
|
const clean = () => {
|
|
29
18
|
var _context, _context2;
|
|
30
|
-
|
|
31
19
|
const projectRoot = _path.default.dirname(_State.default.distDir);
|
|
32
|
-
|
|
33
20
|
const fileType = `.${_State.default.build}`;
|
|
34
21
|
const promises = (0, _map.default)(_context = (0, _filter.default)(_context2 = _fsExtra.default.readdirSync(projectRoot)).call(_context2, a => _path.default.extname(a) === fileType)).call(_context, b => _fsExtra.default.remove(_path.default.join(projectRoot, b)).then(() => _bBerLogger.default.info('clean remove [%s]', b)));
|
|
35
22
|
return _promise.default.all(promises).then(() => _fsExtra.default.remove(_State.default.distDir).then(() => _bBerLogger.default.info('clean remove [%s]', _State.default.distDir)));
|
|
36
23
|
};
|
|
37
|
-
|
|
38
24
|
var _default = () => clean().catch(_bBerLogger.default.error);
|
|
39
|
-
|
|
40
25
|
exports.default = _default;
|
package/dist/container/index.js
CHANGED
|
@@ -1,43 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
|
|
14
|
-
|
|
15
10
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
16
|
-
|
|
17
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
18
|
-
|
|
19
12
|
var _path = _interopRequireDefault(require("path"));
|
|
20
|
-
|
|
21
13
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
22
|
-
|
|
23
14
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
24
|
-
|
|
25
15
|
var _Xml = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Xml"));
|
|
26
|
-
|
|
27
16
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
28
|
-
|
|
29
17
|
/* eslint-disable class-methods-use-this */
|
|
18
|
+
|
|
30
19
|
class Container {
|
|
31
20
|
get dirs() {
|
|
32
21
|
return [_State.default.dist.ops(), _State.default.dist.root('META-INF')];
|
|
33
22
|
}
|
|
34
|
-
|
|
35
23
|
constructor() {
|
|
36
24
|
var _context;
|
|
37
|
-
|
|
38
25
|
this.init = (0, _bind.default)(_context = this.init).call(_context, this);
|
|
39
26
|
}
|
|
40
|
-
|
|
41
27
|
write() {
|
|
42
28
|
const files = [{
|
|
43
29
|
path: _path.default.join('META-INF', 'container.xml'),
|
|
@@ -49,20 +35,15 @@ class Container {
|
|
|
49
35
|
const promises = (0, _map.default)(files).call(files, file => _fsExtra.default.writeFile(_State.default.dist.root(file.path), file.content).then(() => _bBerLogger.default.info('container emit [%s]', file.path)));
|
|
50
36
|
return _promise.default.all(promises);
|
|
51
37
|
}
|
|
52
|
-
|
|
53
38
|
makedirs() {
|
|
54
39
|
var _context2;
|
|
55
|
-
|
|
56
40
|
const promises = (0, _map.default)(_context2 = this.dirs).call(_context2, dir => _fsExtra.default.mkdirs(dir).then(() => _bBerLogger.default.info('container emit [%s]', dir)));
|
|
57
41
|
return _promise.default.all(promises);
|
|
58
42
|
}
|
|
59
|
-
|
|
60
43
|
init() {
|
|
61
44
|
return this.makedirs().then(() => this.write()).catch(_bBerLogger.default.error);
|
|
62
45
|
}
|
|
63
|
-
|
|
64
46
|
}
|
|
65
|
-
|
|
66
47
|
const container = new Container();
|
|
67
48
|
var _default = container.init;
|
|
68
49
|
exports.default = _default;
|
package/dist/copy/index.js
CHANGED
|
@@ -1,42 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
14
|
-
|
|
15
10
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
16
|
-
|
|
17
11
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
18
|
-
|
|
19
12
|
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
20
|
-
|
|
21
13
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
22
|
-
|
|
23
14
|
var _path = _interopRequireDefault(require("path"));
|
|
24
|
-
|
|
25
15
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
26
|
-
|
|
27
16
|
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
28
|
-
|
|
29
17
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
30
|
-
|
|
31
18
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
32
|
-
|
|
33
19
|
const FILE_SIZE_WARNING_LIMIT = 1500000; // 1.5Mb
|
|
20
|
+
const cwd = process.cwd();
|
|
34
21
|
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
// Copy directories of assets into the output directory
|
|
37
23
|
const copy = () => {
|
|
38
24
|
var _context;
|
|
39
|
-
|
|
40
25
|
let {
|
|
41
26
|
ignore
|
|
42
27
|
} = _State.default.config;
|
|
@@ -64,9 +49,7 @@ const copy = () => {
|
|
|
64
49
|
const {
|
|
65
50
|
size
|
|
66
51
|
} = _fsExtra.default.statSync(_path.default.join(dir.to, file));
|
|
67
|
-
|
|
68
52
|
_bBerLogger.default.info('copy [%s - {%d}]', `${baseTo}/${file}`, size);
|
|
69
|
-
|
|
70
53
|
if (size > FILE_SIZE_WARNING_LIMIT) {
|
|
71
54
|
_bBerLogger.default.warn('copy [%s - {%d}] Large file sizes may cause performance issues in some output formats', file, size);
|
|
72
55
|
}
|
|
@@ -74,6 +57,5 @@ const copy = () => {
|
|
|
74
57
|
}));
|
|
75
58
|
return _promise.default.all(promises).catch(_bBerLogger.default.error);
|
|
76
59
|
};
|
|
77
|
-
|
|
78
60
|
var _default = copy;
|
|
79
61
|
exports.default = _default;
|
package/dist/cover/index.js
CHANGED
|
@@ -1,90 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _Object$
|
|
4
|
-
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
5
|
+
var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
7
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
|
8
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
9
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
10
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
5
11
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
|
-
_Object$defineProperty2(exports, "__esModule", {
|
|
12
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
8
13
|
value: true
|
|
9
14
|
});
|
|
10
|
-
|
|
11
15
|
exports.default = void 0;
|
|
12
|
-
|
|
13
16
|
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
14
|
-
|
|
15
17
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
16
|
-
|
|
17
18
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
18
|
-
|
|
19
19
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
20
|
-
|
|
21
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
22
|
-
|
|
23
|
-
var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
|
|
24
|
-
|
|
25
|
-
var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
|
|
26
|
-
|
|
27
|
-
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
28
|
-
|
|
29
|
-
var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
|
|
30
|
-
|
|
31
|
-
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
|
|
32
|
-
|
|
33
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
|
|
34
|
-
|
|
35
|
-
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
36
|
-
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
37
21
|
var _path = _interopRequireDefault(require("path"));
|
|
38
|
-
|
|
39
22
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
40
|
-
|
|
41
23
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
42
|
-
|
|
43
24
|
var _imageSize = _interopRequireDefault(require("image-size"));
|
|
44
|
-
|
|
45
25
|
var _pureimage = _interopRequireDefault(require("pureimage"));
|
|
46
|
-
|
|
47
26
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
48
|
-
|
|
49
27
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
50
|
-
|
|
51
28
|
var _bBerLib = require("@canopycanopycanopy/b-ber-lib");
|
|
52
|
-
|
|
53
29
|
var _Xhtml = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Xhtml"));
|
|
54
|
-
|
|
55
30
|
var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
|
|
56
|
-
|
|
57
|
-
function
|
|
58
|
-
|
|
59
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context2; (0, _forEach.default)(_context2 = ownKeys(Object(source), true)).call(_context2, function (key) { (0, _defineProperty3.default)(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors.default) { (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source)); } else { var _context3; (0, _forEach.default)(_context3 = ownKeys(Object(source))).call(_context3, function (key) { (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key)); }); } } return target; }
|
|
60
|
-
|
|
31
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
61
33
|
class Cover {
|
|
62
34
|
constructor() {
|
|
63
|
-
(0,
|
|
35
|
+
(0, _defineProperty2.default)(this, "getPosY", () => {
|
|
64
36
|
this.posY = this.posY ? this.posY + this.lineHeight : this.marginTop + this.fontSize;
|
|
65
37
|
return this.posY;
|
|
66
38
|
});
|
|
67
|
-
(0,
|
|
39
|
+
(0, _defineProperty2.default)(this, "loadInitialState", async () => {
|
|
68
40
|
this.posY = 0;
|
|
69
41
|
this.coverXHTMLContent = '';
|
|
70
42
|
this.coverEntry = '';
|
|
71
43
|
this.coverImagePath = '';
|
|
72
44
|
});
|
|
73
|
-
(0,
|
|
45
|
+
(0, _defineProperty2.default)(this, "writeCoverXHTML", async () => {
|
|
74
46
|
// Omit cover.xhtml from the PDF build to allow users to define special
|
|
75
47
|
// treatment for the cover in config.yml
|
|
76
48
|
if (_State.default.build === 'pdf') return;
|
|
77
|
-
|
|
78
49
|
const textDir = _State.default.dist.text();
|
|
79
|
-
|
|
80
50
|
const coverFilePath = _State.default.dist.text('cover.xhtml');
|
|
81
|
-
|
|
82
51
|
await _fsExtra.default.mkdirp(textDir);
|
|
83
52
|
await _fsExtra.default.writeFile(coverFilePath, this.coverXHTMLContent);
|
|
84
|
-
|
|
85
53
|
_bBerLogger.default.info('cover wrote XML [cover.xhtml]');
|
|
86
54
|
});
|
|
87
|
-
(0,
|
|
55
|
+
(0, _defineProperty2.default)(this, "init", () => this.loadInitialState().then(() => this.createCoverImage()).then(() => this.writeCoverXHTML()).catch(_bBerLogger.default.error));
|
|
88
56
|
const defaultMetadata = {
|
|
89
57
|
title: '',
|
|
90
58
|
creator: '',
|
|
@@ -97,8 +65,9 @@ class Cover {
|
|
|
97
65
|
this.coverPrefix = '__bber_cover__';
|
|
98
66
|
this.coverXHTMLContent = '';
|
|
99
67
|
this.coverEntry = '';
|
|
100
|
-
this.coverImagePath = '';
|
|
68
|
+
this.coverImagePath = '';
|
|
101
69
|
|
|
70
|
+
// cover data
|
|
102
71
|
this.width = 1600;
|
|
103
72
|
this.height = 2400;
|
|
104
73
|
this.fontSize = 45;
|
|
@@ -107,47 +76,40 @@ class Cover {
|
|
|
107
76
|
this.marginTop = this.fontSize * 2;
|
|
108
77
|
this.colorBackground = '#5050c5';
|
|
109
78
|
this.colorText = '#ffffff';
|
|
110
|
-
this.fontName = 'Free Universal';
|
|
79
|
+
this.fontName = 'Free Universal';
|
|
111
80
|
|
|
112
|
-
|
|
81
|
+
// File name needs to be added to copy.sh
|
|
82
|
+
this.fontFile = 'freeuniversal-bold-webfont.ttf';
|
|
113
83
|
|
|
84
|
+
// increments paragraph Y position
|
|
114
85
|
this.posY = 0;
|
|
115
86
|
}
|
|
116
|
-
|
|
117
87
|
// eslint-disable-next-line class-methods-use-this
|
|
118
88
|
YAMLToObject() {
|
|
119
89
|
var _context;
|
|
120
|
-
|
|
121
90
|
return (0, _reduce.default)(_context = _State.default.metadata.json()).call(_context, (acc, curr) => {
|
|
122
91
|
if (curr.term && curr.value) {
|
|
123
92
|
acc[curr.term] = curr.value;
|
|
124
93
|
}
|
|
125
|
-
|
|
126
94
|
return acc;
|
|
127
95
|
}, {});
|
|
128
96
|
}
|
|
129
|
-
|
|
130
97
|
removeDefaultCovers() {
|
|
131
98
|
const imageDir = _State.default.src.images();
|
|
132
|
-
|
|
133
99
|
const files = _fsExtra.default.readdirSync(imageDir);
|
|
134
|
-
|
|
135
100
|
const covers = (0, _filter.default)(files).call(files, file => _path.default.basename(file).match(new RegExp(this.coverPrefix)));
|
|
136
101
|
if (!covers.length) return _promise.default.resolve();
|
|
137
102
|
const promises = (0, _map.default)(covers).call(covers, file => _fsExtra.default.remove(_path.default.join(imageDir, file)).then(() => _bBerLogger.default.info('cover remove outdated cover image [%s]', file)));
|
|
138
103
|
return _promise.default.all(promises);
|
|
139
104
|
}
|
|
140
|
-
|
|
141
105
|
wrapText(ctx, text) {
|
|
142
106
|
const maxWidth = this.width - this.marginLeft * 2;
|
|
143
107
|
const words = text.split(' ');
|
|
144
108
|
let line = '';
|
|
145
|
-
|
|
146
109
|
for (let n = 0; n < words.length; n++) {
|
|
147
110
|
const testLine = `${line}${words[n]} `;
|
|
148
111
|
const metrics = ctx.measureText(testLine);
|
|
149
112
|
const testWidth = metrics.width;
|
|
150
|
-
|
|
151
113
|
if (testWidth > maxWidth && n > 0) {
|
|
152
114
|
ctx.fillText(line, this.marginLeft, this.getPosY());
|
|
153
115
|
line = `${words[n]} `;
|
|
@@ -155,24 +117,20 @@ class Cover {
|
|
|
155
117
|
line = testLine;
|
|
156
118
|
}
|
|
157
119
|
}
|
|
158
|
-
|
|
159
120
|
ctx.fillText(line, this.marginLeft, this.getPosY());
|
|
160
121
|
}
|
|
161
|
-
|
|
162
122
|
generateDefaultCoverImage() {
|
|
163
123
|
return new _promise.default(resolve => {
|
|
164
124
|
const img = _pureimage.default.make(this.width, this.height);
|
|
165
|
-
|
|
166
125
|
const ctx = img.getContext('2d');
|
|
167
|
-
|
|
168
126
|
const font = _pureimage.default.registerFont(_path.default.join(__dirname, this.fontFile), this.fontName);
|
|
169
|
-
|
|
170
127
|
return font.load(() => {
|
|
171
128
|
ctx.fillStyle = this.colorBackground;
|
|
172
129
|
ctx.fillRect(0, 0, this.width, this.height);
|
|
173
130
|
ctx.font = `${this.fontSize}px '${this.fontName}'`;
|
|
174
|
-
ctx.fillStyle = this.colorText;
|
|
131
|
+
ctx.fillStyle = this.colorText;
|
|
175
132
|
|
|
133
|
+
// add text
|
|
176
134
|
ctx.fillText('Title', this.marginLeft, this.getPosY());
|
|
177
135
|
ctx.fillText(this.metadata.title, this.marginLeft, this.getPosY());
|
|
178
136
|
ctx.fillText('', this.marginLeft, this.getPosY());
|
|
@@ -189,13 +147,11 @@ class Cover {
|
|
|
189
147
|
ctx.fillText(_State.default.version, this.marginLeft, this.getPosY());
|
|
190
148
|
return _pureimage.default.encodeJPEGToStream(img, _fsExtra.default.createWriteStream(this.coverImagePath)).then(() => {
|
|
191
149
|
_bBerLogger.default.info('cover generated image [%s]', this.coverImagePath);
|
|
192
|
-
|
|
193
150
|
resolve();
|
|
194
151
|
}).catch(_bBerLogger.default.error);
|
|
195
152
|
});
|
|
196
153
|
});
|
|
197
154
|
}
|
|
198
|
-
|
|
199
155
|
generateCoverXHTML() {
|
|
200
156
|
// Get the image dimensions and pass them to the coverSVG template
|
|
201
157
|
const {
|
|
@@ -203,70 +159,59 @@ class Cover {
|
|
|
203
159
|
height
|
|
204
160
|
} = (0, _imageSize.default)(this.coverImagePath);
|
|
205
161
|
const href = `images/${encodeURIComponent(this.coverEntry)}`;
|
|
206
|
-
|
|
207
162
|
const svg = _Xhtml.default.cover({
|
|
208
163
|
width,
|
|
209
164
|
height,
|
|
210
165
|
href
|
|
211
|
-
});
|
|
212
|
-
|
|
166
|
+
});
|
|
213
167
|
|
|
168
|
+
// Set the content string to be written once resolved
|
|
214
169
|
this.coverXHTMLContent = _bBerLib.Template.render(svg, _Xhtml.default.body());
|
|
215
|
-
|
|
216
170
|
_bBerLogger.default.info('cover build [cover.xhtml]');
|
|
217
171
|
}
|
|
218
|
-
|
|
219
172
|
addCoverToMetadata() {
|
|
220
173
|
return _fsExtra.default.writeFile(this.metadataYAML, _State.default.metadata.yaml());
|
|
221
174
|
}
|
|
222
|
-
|
|
223
175
|
createCoverImage() {
|
|
224
176
|
this.coverEntry = `${this.coverPrefix}${_crypto.default.randomBytes(20).toString('hex')}.jpg`;
|
|
225
|
-
this.coverImagePath = _State.default.src.images(this.coverEntry);
|
|
226
|
-
|
|
227
|
-
const metadata = _bBerLib.YamlAdaptor.load(this.metadataYAML); // Check if cover if referenced
|
|
177
|
+
this.coverImagePath = _State.default.src.images(this.coverEntry);
|
|
228
178
|
|
|
179
|
+
// Load metadata.yml
|
|
180
|
+
const metadata = _bBerLib.YamlAdaptor.load(this.metadataYAML);
|
|
229
181
|
|
|
182
|
+
// Check if cover if referenced
|
|
230
183
|
const coverListedInMetadata = (0, _utils.getBookMetadata)('cover', _State.default);
|
|
231
|
-
|
|
232
184
|
if (coverListedInMetadata) {
|
|
233
185
|
// TODO: fixme, for generated covers
|
|
234
186
|
// @issue: https://github.com/triplecanopy/b-ber/issues/208
|
|
235
187
|
this.coverEntry = coverListedInMetadata.replace(/_jpg$/, '.jpg');
|
|
188
|
+
_bBerLogger.default.info('cover verify image [%s]', this.coverEntry);
|
|
236
189
|
|
|
237
|
-
|
|
190
|
+
// There's a reference to a cover image, so create a cover.xhtml file
|
|
238
191
|
// containing an SVG-wrapped `image` element with the appropriate cover
|
|
239
192
|
// dimensions and write it to the `text` dir.
|
|
240
|
-
// check that the cover image file exists, throw if not
|
|
241
|
-
|
|
242
193
|
|
|
194
|
+
// check that the cover image file exists, throw if not
|
|
243
195
|
this.coverImagePath = _State.default.src.images(this.coverEntry);
|
|
244
|
-
|
|
245
196
|
if (!_fsExtra.default.existsSync(this.coverImagePath)) {
|
|
246
197
|
_bBerLogger.default.error('Cover image listed in metadata.yml cannot be found');
|
|
247
198
|
}
|
|
248
|
-
|
|
249
199
|
return this.generateCoverXHTML();
|
|
250
|
-
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// If there's no cover referenced in the metadata.yml, create one
|
|
251
203
|
// that displays the book's metadata (title, generator version, etc)
|
|
252
204
|
// and add it to metadata.yml
|
|
253
|
-
|
|
254
|
-
|
|
255
205
|
_bBerLogger.default.info('cover generated image [%s]', this.coverEntry);
|
|
256
|
-
|
|
257
206
|
const coverMetadata = {
|
|
258
207
|
term: 'cover',
|
|
259
208
|
value: this.coverEntry
|
|
260
209
|
};
|
|
261
|
-
|
|
262
210
|
_State.default.metadata.add(coverMetadata);
|
|
263
|
-
|
|
264
211
|
this.metadata = _objectSpread(_objectSpread(_objectSpread({}, coverMetadata), this.metadata), metadata);
|
|
265
212
|
return this.removeDefaultCovers().then(() => this.generateDefaultCoverImage()).then(() => this.generateCoverXHTML()).then(() => this.addCoverToMetadata()).catch(_bBerLogger.default.error);
|
|
266
213
|
}
|
|
267
|
-
|
|
268
214
|
}
|
|
269
|
-
|
|
270
215
|
const cover = new Cover();
|
|
271
216
|
var _default = cover.init;
|
|
272
217
|
exports.default = _default;
|