@canopycanopycanopy/b-ber-lib 3.0.8-nav.0 → 3.0.8-next.101
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/EbookConvert.js +2 -76
- package/Html.js +2 -25
- package/HtmlToXml.js +2 -253
- package/ManifestItemProperties.js +2 -89
- package/README.md +22 -4
- package/State.js +2 -400
- package/Theme.js +2 -172
- package/YamlAdaptor.js +2 -42
- package/dist/index.d.ts +364 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1372 -0
- package/package.json +25 -32
- package/utils.js +2 -0
- package/Config.js +0 -59
- package/GuideItem.js +0 -20
- package/Spine.js +0 -135
- package/SpineItem.js +0 -54
- package/Template.js +0 -21
- package/Url.js +0 -43
- package/Yaml.js +0 -176
- package/index.js +0 -98
- package/utils/index.js +0 -286
package/index.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
_Object$defineProperty(exports, "EbookConvert", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () {
|
|
11
|
-
return _EbookConvert.default;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
_Object$defineProperty(exports, "GuideItem", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function () {
|
|
17
|
-
return _GuideItem.default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
_Object$defineProperty(exports, "Html", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function () {
|
|
23
|
-
return _Html.default;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
_Object$defineProperty(exports, "HtmlToXml", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
get: function () {
|
|
29
|
-
return _HtmlToXml.default;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
_Object$defineProperty(exports, "ManifestItemProperties", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () {
|
|
35
|
-
return _ManifestItemProperties.default;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
_Object$defineProperty(exports, "Spine", {
|
|
39
|
-
enumerable: true,
|
|
40
|
-
get: function () {
|
|
41
|
-
return _Spine.default;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
_Object$defineProperty(exports, "SpineItem", {
|
|
45
|
-
enumerable: true,
|
|
46
|
-
get: function () {
|
|
47
|
-
return _SpineItem.default;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
_Object$defineProperty(exports, "State", {
|
|
51
|
-
enumerable: true,
|
|
52
|
-
get: function () {
|
|
53
|
-
return _State.default;
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
_Object$defineProperty(exports, "Template", {
|
|
57
|
-
enumerable: true,
|
|
58
|
-
get: function () {
|
|
59
|
-
return _Template.default;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
_Object$defineProperty(exports, "Theme", {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
get: function () {
|
|
65
|
-
return _Theme.default;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
_Object$defineProperty(exports, "Url", {
|
|
69
|
-
enumerable: true,
|
|
70
|
-
get: function () {
|
|
71
|
-
return _Url.default;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
_Object$defineProperty(exports, "YamlAdaptor", {
|
|
75
|
-
enumerable: true,
|
|
76
|
-
get: function () {
|
|
77
|
-
return _YamlAdaptor.default;
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
_Object$defineProperty(exports, "utils", {
|
|
81
|
-
enumerable: true,
|
|
82
|
-
get: function () {
|
|
83
|
-
return _utils.default;
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
var _EbookConvert = _interopRequireDefault(require("./EbookConvert"));
|
|
87
|
-
var _HtmlToXml = _interopRequireDefault(require("./HtmlToXml"));
|
|
88
|
-
var _ManifestItemProperties = _interopRequireDefault(require("./ManifestItemProperties"));
|
|
89
|
-
var _State = _interopRequireDefault(require("./State"));
|
|
90
|
-
var _YamlAdaptor = _interopRequireDefault(require("./YamlAdaptor"));
|
|
91
|
-
var _Theme = _interopRequireDefault(require("./Theme"));
|
|
92
|
-
var _utils = _interopRequireDefault(require("./utils"));
|
|
93
|
-
var _Url = _interopRequireDefault(require("./Url"));
|
|
94
|
-
var _Html = _interopRequireDefault(require("./Html"));
|
|
95
|
-
var _SpineItem = _interopRequireDefault(require("./SpineItem"));
|
|
96
|
-
var _GuideItem = _interopRequireDefault(require("./GuideItem"));
|
|
97
|
-
var _Spine = _interopRequireDefault(require("./Spine"));
|
|
98
|
-
var _Template = _interopRequireDefault(require("./Template"));
|
package/utils/index.js
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.createUnsupportedInline = createUnsupportedInline;
|
|
9
|
-
exports.ensure = void 0;
|
|
10
|
-
exports.ensurePoster = ensurePoster;
|
|
11
|
-
exports.ensureSource = ensureSource;
|
|
12
|
-
exports.ensureSupportedClassNames = ensureSupportedClassNames;
|
|
13
|
-
exports.validatePosterImage = exports.safeWrite = exports.resolveIntersectingUrl = exports.renderPosterImage = exports.renderCaption = exports.opsPath = exports.getTitle = exports.getMediaType = exports.getImageOrientation = exports.getBookMetadata = exports.generateWebpubManifest = exports.fileId = exports.fail = void 0;
|
|
14
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
15
|
-
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
16
|
-
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
17
|
-
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
18
|
-
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
19
|
-
var _url = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/url"));
|
|
20
|
-
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
21
|
-
var _map2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map"));
|
|
22
|
-
var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
|
|
23
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
24
|
-
var _path = _interopRequireDefault(require("path"));
|
|
25
|
-
var _find = _interopRequireDefault(require("lodash/find"));
|
|
26
|
-
var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
|
27
|
-
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
28
|
-
var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
|
|
29
|
-
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
30
|
-
var _ = require("..");
|
|
31
|
-
// import ffprobe from 'ffprobe'
|
|
32
|
-
// import ffprobeStatic from 'ffprobe-static'
|
|
33
|
-
|
|
34
|
-
// Get a file's relative path to the OPS
|
|
35
|
-
const opsPath = (fpath, base) => fpath.replace(new RegExp(`^${base}${_path.default.sep}OPS${_path.default.sep}?`), '');
|
|
36
|
-
|
|
37
|
-
// https://www.w3.org/TR/xml-names/#Conformance
|
|
38
|
-
exports.opsPath = opsPath;
|
|
39
|
-
const fileId = str => `_${str.replace(/[^a-zA-Z0-9_-]/g, '_')}`;
|
|
40
|
-
|
|
41
|
-
// Determine an image's orientation
|
|
42
|
-
exports.fileId = fileId;
|
|
43
|
-
const getImageOrientation = (w, h) => {
|
|
44
|
-
// assign image class based on w:h ratio
|
|
45
|
-
const widthToHeight = w / h;
|
|
46
|
-
let imageType = null;
|
|
47
|
-
if (widthToHeight < 0.61) imageType = 'portrait-high';
|
|
48
|
-
if (widthToHeight >= 0.61 && widthToHeight < 1) imageType = 'portrait';
|
|
49
|
-
if (widthToHeight === 1) imageType = 'square';
|
|
50
|
-
if (widthToHeight > 1) imageType = 'landscape';
|
|
51
|
-
return imageType;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
// const getAspectRatioClassName = (key = '16:9') =>
|
|
55
|
-
// ({ '4:3': 'video--4x3', '16:9': 'video--16x9', '21:9': 'video--21x9' }[key])
|
|
56
|
-
|
|
57
|
-
// export const getVideoAspectRatio = async filePath => {
|
|
58
|
-
// if (!filePath) return getAspectRatioClassName()
|
|
59
|
-
|
|
60
|
-
// const { streams } = await ffprobe(filePath, { path: ffprobeStatic.path })
|
|
61
|
-
// if (!streams) return getAspectRatioClassName()
|
|
62
|
-
// const { display_aspect_ratio: aspectRatio } = streams
|
|
63
|
-
// return getAspectRatioClassName(aspectRatio)
|
|
64
|
-
// }
|
|
65
|
-
|
|
66
|
-
// TODO: the whole figures/generated pages/user-configurable YAML thing should
|
|
67
|
-
// be worked out better. one reason is below, where we need the title of a
|
|
68
|
-
// generated page, but since metadata is attached in the frontmatter YAML of an
|
|
69
|
-
// MD file, there is no reference for the metadata.
|
|
70
|
-
// @issue: https://github.com/triplecanopy/b-ber/issues/208
|
|
71
|
-
//
|
|
72
|
-
// this is provisional, will just cause more confusion in the future
|
|
73
|
-
exports.getImageOrientation = getImageOrientation;
|
|
74
|
-
const getTitle = page => {
|
|
75
|
-
if (page.name === 'figures-titlepage') return 'Figures';
|
|
76
|
-
const meta = _.State.spine.frontMatter.get(page.name);
|
|
77
|
-
return meta && meta.title ? meta.title : page.title || page.name;
|
|
78
|
-
};
|
|
79
|
-
exports.getTitle = getTitle;
|
|
80
|
-
const getBookMetadata = term => {
|
|
81
|
-
const entry = (0, _find.default)(_.State.metadata.json(), {
|
|
82
|
-
term
|
|
83
|
-
});
|
|
84
|
-
if (entry && entry.value) return entry.value;
|
|
85
|
-
_bBerLogger.default.warn(`Could not find metadata value for ${term}`);
|
|
86
|
-
return '';
|
|
87
|
-
};
|
|
88
|
-
exports.getBookMetadata = getBookMetadata;
|
|
89
|
-
const safeWrite = (dest, data) => _fsExtra.default.existsSync(dest) ? _promise.default.resolve() : _fsExtra.default.writeFile(dest, data);
|
|
90
|
-
exports.safeWrite = safeWrite;
|
|
91
|
-
const fail = (_msg, _err, yargs) => {
|
|
92
|
-
yargs.showHelp();
|
|
93
|
-
process.exit(0);
|
|
94
|
-
};
|
|
95
|
-
exports.fail = fail;
|
|
96
|
-
const ensureDirs = (dirs, prefix) => {
|
|
97
|
-
var _context, _context2;
|
|
98
|
-
const cwd = process.cwd();
|
|
99
|
-
const dirs_ = (0, _map.default)(_context = (0, _uniq.default)((0, _concat.default)(_context2 = [`${prefix}/_project`, `${prefix}/_project/_fonts`, `${prefix}/_project/_images`, `${prefix}/_project/_javascripts`, `${prefix}/_project/_markdown`, `${prefix}/_project/_media`, `${prefix}/_project/_stylesheets`, `${prefix}/themes`]).call(_context2, dirs))).call(_context, a => _fsExtra.default.ensureDir(_path.default.join(cwd, a)));
|
|
100
|
-
return _promise.default.all(dirs_);
|
|
101
|
-
};
|
|
102
|
-
const ensureFiles = (files, prefix) => {
|
|
103
|
-
var _context3, _context4, _context5;
|
|
104
|
-
const files_ = (0, _reduce.default)(_context3 = (0, _concat.default)(_context4 = (0, _filter.default)(_context5 = [{
|
|
105
|
-
absolutePath: _path.default.resolve(prefix, '_project', 'toc.yml'),
|
|
106
|
-
content: ''
|
|
107
|
-
}]).call(_context5, ({
|
|
108
|
-
absolutePath
|
|
109
|
-
}) => (0, _findIndex.default)(files, {
|
|
110
|
-
absolutePath
|
|
111
|
-
}) < 0)).call(_context4, files)).call(_context3, (acc, curr) => _fsExtra.default.existsSync(curr.absolutePath) ? acc : (0, _concat.default)(acc).call(acc, _fsExtra.default.writeFile(curr.absolutePath, curr.content)), []);
|
|
112
|
-
return _promise.default.all(files_);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
// make sure all necessary files and directories exist
|
|
116
|
-
const ensure = ({
|
|
117
|
-
files = [],
|
|
118
|
-
dirs = [],
|
|
119
|
-
prefix = ''
|
|
120
|
-
} = {}) => ensureDirs(dirs, prefix).then(() => ensureFiles(files, prefix)).catch(_bBerLogger.default.error);
|
|
121
|
-
exports.ensure = ensure;
|
|
122
|
-
const trimLeadingSlash = s => s.replace(/^\//, '');
|
|
123
|
-
const resolveIntersectingUrl = (u, p) => {
|
|
124
|
-
var _context6, _context7;
|
|
125
|
-
let url;
|
|
126
|
-
try {
|
|
127
|
-
url = new _url.default(u);
|
|
128
|
-
} catch (err) {
|
|
129
|
-
_bBerLogger.default.warn(`${err.message}: "${u}"`);
|
|
130
|
-
return u;
|
|
131
|
-
}
|
|
132
|
-
const {
|
|
133
|
-
pathname
|
|
134
|
-
} = url;
|
|
135
|
-
let urlParts = (0, _filter.default)(_context6 = pathname.split('/')).call(_context6, Boolean);
|
|
136
|
-
let pathParts = (0, _filter.default)(_context7 = p.split('/')).call(_context7, Boolean);
|
|
137
|
-
|
|
138
|
-
// Remove filename if there is one
|
|
139
|
-
if (/\./.test(urlParts[urlParts.length - 1])) {
|
|
140
|
-
urlParts.pop();
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Find indices where to slice arrays
|
|
144
|
-
let intersectionIndices = [];
|
|
145
|
-
for (let i = 0; i < urlParts.length; i++) {
|
|
146
|
-
for (let j = 0; j < pathParts.length; j++) {
|
|
147
|
-
if (urlParts[i] === pathParts[j]) {
|
|
148
|
-
intersectionIndices = [i, j];
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
const [uIdx, pIdx] = intersectionIndices;
|
|
154
|
-
urlParts = (0, _slice.default)(urlParts).call(urlParts, 0, uIdx);
|
|
155
|
-
pathParts = (0, _slice.default)(pathParts).call(pathParts, pIdx);
|
|
156
|
-
const intersection = (0, _concat.default)(urlParts).call(urlParts, pathParts);
|
|
157
|
-
url.pathname = intersection.join('/');
|
|
158
|
-
return url.href;
|
|
159
|
-
};
|
|
160
|
-
exports.resolveIntersectingUrl = resolveIntersectingUrl;
|
|
161
|
-
const webpubManifestResource = base => file => {
|
|
162
|
-
const href = resolveIntersectingUrl(base, file);
|
|
163
|
-
return {
|
|
164
|
-
href,
|
|
165
|
-
type: _mimeTypes.default.lookup(file)
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
const webpubManifestReadingOrderItem = base => ({
|
|
169
|
-
title,
|
|
170
|
-
file
|
|
171
|
-
}) => {
|
|
172
|
-
const href = resolveIntersectingUrl(base, file);
|
|
173
|
-
return {
|
|
174
|
-
href,
|
|
175
|
-
title,
|
|
176
|
-
type: 'text/xhtml'
|
|
177
|
-
};
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
// https://github.com/readium/webpub-manifest
|
|
181
|
-
const generateWebpubManifest = files => {
|
|
182
|
-
var _context8, _context9;
|
|
183
|
-
const remoteURL = _.Url.trimSlashes(_.State.config.remote_url);
|
|
184
|
-
|
|
185
|
-
// Build a map to sort the files according to the position in the spine
|
|
186
|
-
const fileMap = new _map2.default((0, _map.default)(files).call(files, f => [_path.default.basename(f), f]));
|
|
187
|
-
|
|
188
|
-
// Create the items for the manifest's reading order
|
|
189
|
-
const readingOrderItems = (0, _reduce.default)(_context8 = _.State.spine.flattened).call(_context8, (acc, curr) => {
|
|
190
|
-
const file = fileMap.get(`${curr.fileName}.xhtml`);
|
|
191
|
-
return !file ? acc : (0, _concat.default)(acc).call(acc, {
|
|
192
|
-
file,
|
|
193
|
-
title: curr.title
|
|
194
|
-
});
|
|
195
|
-
}, []);
|
|
196
|
-
const readingOrder = (0, _map.default)(readingOrderItems).call(readingOrderItems, webpubManifestReadingOrderItem(remoteURL));
|
|
197
|
-
const resources = (0, _map.default)(_context9 = (0, _filter.default)(files).call(files, file => _path.default.basename(file).charAt(0) !== '.')).call(_context9, webpubManifestResource(remoteURL));
|
|
198
|
-
const manifest = {
|
|
199
|
-
'@context': 'https://readium.org/webpub-manifest/context.jsonld',
|
|
200
|
-
metadata: {
|
|
201
|
-
'@type': 'http://schema.org/Book',
|
|
202
|
-
title: getBookMetadata('title', _.State),
|
|
203
|
-
author: getBookMetadata('creator', _.State),
|
|
204
|
-
identifier: getBookMetadata('identifier', _.State),
|
|
205
|
-
language: getBookMetadata('language', _.State),
|
|
206
|
-
publisher: getBookMetadata('publisher', _.State),
|
|
207
|
-
modified: new Date().toISOString()
|
|
208
|
-
},
|
|
209
|
-
links: [{
|
|
210
|
-
rel: 'self',
|
|
211
|
-
href: `${remoteURL}/${trimLeadingSlash(_.State.distDir)}/manifest.json`,
|
|
212
|
-
type: 'application/webpub+json'
|
|
213
|
-
}
|
|
214
|
-
// { rel: 'alternate', href: `${remoteURL}/publication.epub`, type: 'application/epub+zip' },
|
|
215
|
-
// { rel: 'search', href: `${remoteURL}/search{?query}`, type: 'text/html', templated: true },
|
|
216
|
-
],
|
|
217
|
-
|
|
218
|
-
readingOrder,
|
|
219
|
-
resources
|
|
220
|
-
};
|
|
221
|
-
return manifest;
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
// b-ber-grammar-* utilities
|
|
225
|
-
exports.generateWebpubManifest = generateWebpubManifest;
|
|
226
|
-
const validatePosterImage = (asset, type) => {
|
|
227
|
-
const assetPath = _.State.src.images(asset);
|
|
228
|
-
if (!_fsExtra.default.existsSync(assetPath)) {
|
|
229
|
-
_bBerLogger.default.error(`bber-directives: Poster image for [${type}] does not exist`);
|
|
230
|
-
}
|
|
231
|
-
return asset;
|
|
232
|
-
};
|
|
233
|
-
exports.validatePosterImage = validatePosterImage;
|
|
234
|
-
const renderPosterImage = poster => poster ? `<img src="${poster}" alt="Poster Image"/>` : '';
|
|
235
|
-
exports.renderPosterImage = renderPosterImage;
|
|
236
|
-
const renderCaption = (caption, mediaType) => caption ? `<p class="caption caption__${mediaType}">${caption}</p>` : '';
|
|
237
|
-
exports.renderCaption = renderCaption;
|
|
238
|
-
const getMediaType = type => {
|
|
239
|
-
const index = (0, _indexOf.default)(type).call(type, '-');
|
|
240
|
-
return index > -1 ? type.substring(0, index) : type;
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
// Only render unsupported HTML for inline embeds since the unsupported figure
|
|
244
|
-
// in the LOI is handled by b-ber-templates. Not great UI to have to click to
|
|
245
|
-
// the LOI to see that something is unsupported, but vimeo directives should
|
|
246
|
-
// mostly be managed by media.yml which supports fallbacks.
|
|
247
|
-
exports.getMediaType = getMediaType;
|
|
248
|
-
function createUnsupportedInline({
|
|
249
|
-
id,
|
|
250
|
-
commentStart,
|
|
251
|
-
commentEnd,
|
|
252
|
-
attrString,
|
|
253
|
-
mediaType,
|
|
254
|
-
poster
|
|
255
|
-
}) {
|
|
256
|
-
return `
|
|
257
|
-
${commentStart}
|
|
258
|
-
<section class="${mediaType} figure__large figure__inline">
|
|
259
|
-
<div id="${id}" ${attrString}>
|
|
260
|
-
<div class="media__fallback media__fallback__${mediaType} media__fallback--image">
|
|
261
|
-
<figure>
|
|
262
|
-
${renderPosterImage(poster)}
|
|
263
|
-
</figure>
|
|
264
|
-
</div>
|
|
265
|
-
<p class="media__fallback media__fallback__${mediaType} media__fallback--text">Your device does not support embedded media.</p>
|
|
266
|
-
</div>
|
|
267
|
-
</section>
|
|
268
|
-
${commentEnd}`;
|
|
269
|
-
}
|
|
270
|
-
function ensureSource(obj, type, fileName, lineNumber) {
|
|
271
|
-
if (!obj.source) {
|
|
272
|
-
_bBerLogger.default.error(`Directive [${type}] requires a [source] attribute at [${fileName}:${lineNumber}]`);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
function ensurePoster(obj, type) {
|
|
276
|
-
if (!obj.poster) return;
|
|
277
|
-
validatePosterImage(obj.poster, type);
|
|
278
|
-
// eslint-disable-next-line no-param-reassign
|
|
279
|
-
obj.poster = `../images/${encodeURIComponent(_path.default.basename(obj.poster))}`;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Add mediaType to classes
|
|
283
|
-
function ensureSupportedClassNames(obj, supported) {
|
|
284
|
-
// eslint-disable-next-line no-param-reassign
|
|
285
|
-
obj.classes += ` embed ${supported(_.State.build) ? '' : 'un'}supported`;
|
|
286
|
-
}
|