diff --git a/docs/gridsome.server.js b/docs/gridsome.server.js
index cd983ad1..976c8bad 100644
--- a/docs/gridsome.server.js
+++ b/docs/gridsome.server.js
@@ -50,6 +50,8 @@ module.exports = function (api) {
/**
* Generate pages for all demo components for testing purposes
*/
+ const demos = []
+
globby.sync('./src/demos/**/index.(vue|jsx)').forEach(file => {
const match = file.match(
new RegExp(/\.\/src\/demos\/([\S]+)\/index.(vue|jsx)/i),
@@ -59,14 +61,24 @@ module.exports = function (api) {
return
}
- api.createPages(({ createPage }) => {
+ demos.push(match[1])
+ })
+
+ api.createPages(({ createPage }) => {
+ createPage({
+ path: '/demos',
+ component: './src/templates/DemoPages/index.vue',
+ context: {
+ demos,
+ },
+ })
+
+ demos.forEach(name => {
createPage({
- // path: '/demos/Extensions/CharacterCount'
- path: `/demos/${match[1]}`,
+ path: `/demos/${name}`,
component: './src/templates/DemoPage/index.vue',
context: {
- // name: 'Extensions/CharacterCount'
- name: match[1],
+ name,
},
})
})
@@ -116,9 +128,7 @@ module.exports = function (api) {
const width = 1200
const height = 630
-
const border = 40
-
const canvas = createCanvas(width, height)
const context = canvas.getContext('2d')
diff --git a/docs/src/demos/Examples/Savvy/findColors.ts b/docs/src/demos/Examples/Savvy/findColors.ts
index b4a196f4..48832ffa 100644
--- a/docs/src/demos/Examples/Savvy/findColors.ts
+++ b/docs/src/demos/Examples/Savvy/findColors.ts
@@ -1,33 +1,29 @@
import { Decoration, DecorationSet } from 'prosemirror-view'
import { Node } from 'prosemirror-model'
-export default function (doc: Node) {
+export default function (doc: Node): DecorationSet {
const hexColor = /(#[0-9a-f]{3,6})\b/ig
- const results: any[] = []
- const decorations: [any?] = []
+ const decorations: Decoration[] = []
- doc.descendants((node: any, position: any) => {
- if (!node.isText) {
+ doc.descendants((node, position) => {
+ if (!node.text) {
return
}
- let matches
+ Array
+ .from(node.text.matchAll(hexColor))
+ .forEach(match => {
+ const color = match[0]
+ const index = match.index || 0
+ const from = position + index
+ const to = position + index + match[0].length
+ const decoration = Decoration.inline(from, to, {
+ class: 'color',
+ style: `--color: ${color}`,
+ })
- // eslint-disable-next-line
- while (matches = hexColor.exec(node.text)) {
- results.push({
- color: matches[0],
- from: position + matches.index,
- to: position + matches.index + matches[0].length,
+ decorations.push(decoration)
})
- }
- })
-
- results.forEach(issue => {
- decorations.push(Decoration.inline(issue.from, issue.to, {
- class: 'color',
- style: `--color: ${issue.color}`,
- }))
})
return DecorationSet.create(doc, decorations)
diff --git a/docs/src/templates/DemoPages/index.vue b/docs/src/templates/DemoPages/index.vue
new file mode 100644
index 00000000..9a233085
--- /dev/null
+++ b/docs/src/templates/DemoPages/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/docs/src/templates/DemoPages/style.scss b/docs/src/templates/DemoPages/style.scss
new file mode 100644
index 00000000..14ac33ae
--- /dev/null
+++ b/docs/src/templates/DemoPages/style.scss
@@ -0,0 +1,8 @@
+.demos-page {
+ padding: 1.25rem;
+ list-style: none;
+
+ li {
+ margin: 0.5rem 0;
+ }
+}