Skip to content

Commit f55caab

Browse files
committed
fix: convert page - handle tabsets
1 parent 84b9279 commit f55caab

3 files changed

Lines changed: 307 additions & 142 deletions

File tree

package.json

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"bluebird": "3.7.2",
5757
"body-parser": "1.19.0",
5858
"chalk": "4.1.0",
59-
"cheerio": "1.0.0-rc.3",
59+
"cheerio": "1.0.0-rc.5",
6060
"chokidar": "3.4.3",
6161
"chromium-pickle-js": "0.2.0",
6262
"clean-css": "4.2.3",
@@ -70,12 +70,12 @@
7070
"dependency-graph": "0.9.0",
7171
"diff": "4.0.2",
7272
"diff2html": "3.1.14",
73-
"dompurify": "2.2.0",
73+
"dompurify": "2.2.7",
7474
"dotize": "0.3.0",
7575
"elasticsearch6": "npm:@elastic/elasticsearch@6",
7676
"elasticsearch7": "npm:@elastic/elasticsearch@7",
77-
"emoji-regex": "9.2.0",
78-
"eventemitter2": "6.4.3",
77+
"emoji-regex": "9.2.2",
78+
"eventemitter2": "6.4.4",
7979
"express": "4.17.1",
8080
"express-brute": "1.0.1",
8181
"express-session": "1.17.1",
@@ -102,7 +102,7 @@
102102
"katex": "0.12.0",
103103
"klaw": "3.0.0",
104104
"knex": "0.21.7",
105-
"lodash": "4.17.20",
105+
"lodash": "4.17.21",
106106
"luxon": "1.25.0",
107107
"markdown-it": "11.0.1",
108108
"markdown-it-abbr": "1.0.4",
@@ -112,22 +112,22 @@
112112
"markdown-it-external-links": "0.0.6",
113113
"markdown-it-footnote": "3.0.2",
114114
"markdown-it-imsize": "2.0.1",
115-
"markdown-it-mark": "3.0.0",
115+
"markdown-it-mark": "3.0.1",
116116
"markdown-it-mathjax": "2.0.0",
117117
"markdown-it-multimd-table": "4.0.3",
118118
"markdown-it-sub": "1.0.0",
119119
"markdown-it-sup": "1.0.0",
120120
"markdown-it-task-lists": "2.1.1",
121121
"mathjax": "3.1.2",
122-
"mime-types": "2.1.27",
122+
"mime-types": "2.1.30",
123123
"moment": "2.29.1",
124124
"moment-timezone": "0.5.31",
125-
"mongodb": "3.6.2",
126-
"ms": "2.1.2",
125+
"mongodb": "3.6.5",
126+
"ms": "2.1.3",
127127
"mssql": "6.2.3",
128128
"multer": "1.4.2",
129129
"mysql2": "2.2.5",
130-
"nanoid": "3.1.15",
130+
"nanoid": "3.1.22",
131131
"node-2fa": "1.1.2",
132132
"node-cache": "5.1.2",
133133
"nodemailer": "6.4.14",
@@ -157,7 +157,7 @@
157157
"pg-pubsub": "0.5.0",
158158
"pg-query-stream": "3.3.1",
159159
"pg-tsquery": "8.1.0",
160-
"pug": "3.0.0",
160+
"pug": "3.0.2",
161161
"punycode": "2.1.1",
162162
"qr-image": "3.2.0",
163163
"raven": "2.6.4",
@@ -167,20 +167,20 @@
167167
"safe-regex": "2.1.1",
168168
"sanitize-filename": "1.6.3",
169169
"scim-query-filter-parser": "2.0.4",
170-
"semver": "7.3.2",
170+
"semver": "7.3.5",
171171
"serve-favicon": "2.5.0",
172172
"simple-git": "2.21.0",
173173
"solr-node": "1.2.1",
174-
"sqlite3": "5.0.0",
174+
"sqlite3": "5.0.2",
175175
"ssh2": "0.8.9",
176176
"ssh2-promise": "0.1.7",
177177
"striptags": "3.1.1",
178178
"subscriptions-transport-ws": "0.9.18",
179-
"tar-fs": "2.1.0",
179+
"tar-fs": "2.1.1",
180180
"turndown": "7.0.0",
181-
"twemoji": "13.0.1",
181+
"twemoji": "13.0.2",
182182
"uslug": "1.0.4",
183-
"uuid": "8.3.1",
183+
"uuid": "8.3.2",
184184
"validate.js": "0.13.1",
185185
"winston": "3.3.3",
186186
"xss": "1.0.8",
@@ -228,7 +228,7 @@
228228
"cash-dom": "8.1.0",
229229
"chart.js": "2.9.4",
230230
"clean-webpack-plugin": "3.0.0",
231-
"clipboard": "2.0.6",
231+
"clipboard": "2.0.8",
232232
"codemirror": "5.58.2",
233233
"copy-webpack-plugin": "6.2.1",
234234
"core-js": "3.6.5",
@@ -262,7 +262,7 @@
262262
"i18next-xhr-backend": "3.2.2",
263263
"ignore-loader": "0.1.2",
264264
"jest": "26.6.1",
265-
"js-beautify": "1.13.0",
265+
"js-beautify": "1.13.5",
266266
"js-cookie": "2.2.1",
267267
"mermaid": "8.8.2",
268268
"mini-css-extract-plugin": "0.11.3",
@@ -301,7 +301,7 @@
301301
"vue-clipboards": "1.3.0",
302302
"vue-filepond": "6.0.3",
303303
"vue-hot-reload-api": "2.3.4",
304-
"vue-loader": "15.9.3",
304+
"vue-loader": "15.9.6",
305305
"vue-moment": "4.1.0",
306306
"vue-router": "3.4.7",
307307
"vue-status-indicator": "1.2.1",
@@ -312,7 +312,7 @@
312312
"vuetify": "2.3.15",
313313
"vuetify-loader": "1.6.0",
314314
"vuex": "3.5.1",
315-
"vuex-pathify": "1.4.1",
315+
"vuex-pathify": "1.4.5",
316316
"vuex-persistedstate": "3.1.0",
317317
"webpack": "4.44.2",
318318
"webpack-bundle-analyzer": "3.9.0",

server/models/pages.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,8 +520,35 @@ module.exports = class Page extends Model {
520520
})
521521

522522
if ($.root().children().length > 0) {
523+
// Remove header anchors
523524
$('.toc-anchor').remove()
524525

526+
// Attempt to convert tabsets
527+
$('tabset').each((tabI, tabElm) => {
528+
const tabHeaders = []
529+
// -> Extract templates
530+
$(tabElm).children('template').each((tmplI, tmplElm) => {
531+
if ($(tmplElm).attr('v-slot:tabs') === '') {
532+
$(tabElm).before('<ul class="tabset-headers">' + $(tmplElm).html() + '</ul>')
533+
} else {
534+
$(tabElm).after('<div class="markdown-tabset">' + $(tmplElm).html() + '</div>')
535+
}
536+
})
537+
// -> Parse tab headers
538+
$(tabElm).prev('.tabset-headers').children((i, elm) => {
539+
tabHeaders.push($(elm).html())
540+
})
541+
$(tabElm).prev('.tabset-headers').remove()
542+
// -> Inject tab headers
543+
$(tabElm).next('.markdown-tabset').children((i, elm) => {
544+
if (tabHeaders.length > i) {
545+
$(elm).prepend(`<h2>${tabHeaders[i]}</h2>`)
546+
}
547+
})
548+
$(tabElm).next('.markdown-tabset').prepend('<h1>Tabset</h1>')
549+
$(tabElm).remove()
550+
})
551+
525552
convertedContent = $.html('body').replace('<body>', '').replace('</body>', '').replace(/&#x([0-9a-f]{1,6});/ig, (entity, code) => {
526553
code = parseInt(code, 16)
527554

0 commit comments

Comments
 (0)