mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-15 11:44:05 +02:00
@@ -0,0 +1,42 @@
|
||||
/** @jsx h */
|
||||
/* eslint-disable react/jsx-key */
|
||||
|
||||
import Html from '../..'
|
||||
import React from 'react'
|
||||
import parse5 from 'parse5' // eslint-disable-line import/no-extraneous-dependencies
|
||||
|
||||
const html = new Html({
|
||||
parseHtml: parse5.parseFragment,
|
||||
rules: [
|
||||
{
|
||||
serialize(obj, children) {
|
||||
switch (obj.kind) {
|
||||
case 'block': {
|
||||
switch (obj.type) {
|
||||
case 'paragraph': return React.createElement('p', {}, children)
|
||||
case 'quote': return React.createElement('blockquote', {}, children)
|
||||
}
|
||||
}
|
||||
case 'mark': {
|
||||
switch (obj.type) {
|
||||
case 'bold': return React.createElement('strong', {}, children)
|
||||
case 'italic': return React.createElement('em', {}, children)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
export default function (string) {
|
||||
html.deserialize(string)
|
||||
}
|
||||
|
||||
export const input = `
|
||||
<blockquote>
|
||||
<p>
|
||||
This is editable <strong>rich</strong> text, <em>much</em> better than a textarea!
|
||||
</p>
|
||||
</blockquote>
|
||||
`.trim().repeat(10)
|
@@ -0,0 +1,49 @@
|
||||
/** @jsx h */
|
||||
/* eslint-disable react/jsx-key */
|
||||
|
||||
import Html from '../..'
|
||||
import React from 'react'
|
||||
import h from '../../test/helpers/h'
|
||||
import parse5 from 'parse5' // eslint-disable-line import/no-extraneous-dependencies
|
||||
|
||||
const html = new Html({
|
||||
parseHtml: parse5.parseFragment,
|
||||
rules: [
|
||||
{
|
||||
serialize(obj, children) {
|
||||
switch (obj.kind) {
|
||||
case 'block': {
|
||||
switch (obj.type) {
|
||||
case 'paragraph': return React.createElement('p', {}, children)
|
||||
case 'quote': return React.createElement('blockquote', {}, children)
|
||||
}
|
||||
}
|
||||
case 'mark': {
|
||||
switch (obj.type) {
|
||||
case 'bold': return React.createElement('strong', {}, children)
|
||||
case 'italic': return React.createElement('em', {}, children)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
export default function (state) {
|
||||
html.serialize(state)
|
||||
}
|
||||
|
||||
export const input = (
|
||||
<state>
|
||||
<document>
|
||||
{Array.from(Array(10)).map(() => (
|
||||
<quote>
|
||||
<paragraph>
|
||||
This is editable <b>rich</b> text, <i>much</i> better than a textarea!
|
||||
</paragraph>
|
||||
</quote>
|
||||
))}
|
||||
</document>
|
||||
</state>
|
||||
)
|
41
packages/slate-html-serializer/benchmark/index.js
Normal file
41
packages/slate-html-serializer/benchmark/index.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/* global suite, set, bench */
|
||||
|
||||
import fs from 'fs'
|
||||
import { basename, extname, resolve } from 'path'
|
||||
import { __clear } from '../../slate/lib/utils/memoize'
|
||||
|
||||
/**
|
||||
* Benchmarks.
|
||||
*/
|
||||
|
||||
const categoryDir = resolve(__dirname)
|
||||
const categories = fs.readdirSync(categoryDir).filter(c => c[0] != '.' && c != 'index.js')
|
||||
|
||||
categories.forEach((category) => {
|
||||
suite(category, () => {
|
||||
set('iterations', 100)
|
||||
set('mintime', 2000)
|
||||
|
||||
if (category == 'models') {
|
||||
after(() => {
|
||||
__clear()
|
||||
})
|
||||
}
|
||||
|
||||
const benchmarkDir = resolve(categoryDir, category)
|
||||
const benchmarks = fs.readdirSync(benchmarkDir).filter(b => b[0] != '.' && !!~b.indexOf('.js')).map(b => basename(b, extname(b)))
|
||||
|
||||
benchmarks.forEach((benchmark) => {
|
||||
const dir = resolve(benchmarkDir, benchmark)
|
||||
const module = require(dir)
|
||||
const fn = module.default
|
||||
let { input, before, after } = module
|
||||
if (before) input = before(input)
|
||||
|
||||
bench(benchmark, () => {
|
||||
fn(input)
|
||||
if (after) after()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
41
packages/slate-plain-serializer/benchmark/index.js
Normal file
41
packages/slate-plain-serializer/benchmark/index.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/* global suite, set, bench */
|
||||
|
||||
import fs from 'fs'
|
||||
import { basename, extname, resolve } from 'path'
|
||||
import { __clear } from '../../slate/lib/utils/memoize'
|
||||
|
||||
/**
|
||||
* Benchmarks.
|
||||
*/
|
||||
|
||||
const categoryDir = resolve(__dirname)
|
||||
const categories = fs.readdirSync(categoryDir).filter(c => c[0] != '.' && c != 'index.js')
|
||||
|
||||
categories.forEach((category) => {
|
||||
suite(category, () => {
|
||||
set('iterations', 100)
|
||||
set('mintime', 2000)
|
||||
|
||||
if (category == 'models') {
|
||||
after(() => {
|
||||
__clear()
|
||||
})
|
||||
}
|
||||
|
||||
const benchmarkDir = resolve(categoryDir, category)
|
||||
const benchmarks = fs.readdirSync(benchmarkDir).filter(b => b[0] != '.' && !!~b.indexOf('.js')).map(b => basename(b, extname(b)))
|
||||
|
||||
benchmarks.forEach((benchmark) => {
|
||||
const dir = resolve(benchmarkDir, benchmark)
|
||||
const module = require(dir)
|
||||
const fn = module.default
|
||||
let { input, before, after } = module
|
||||
if (before) input = before(input)
|
||||
|
||||
bench(benchmark, () => {
|
||||
fn(input)
|
||||
if (after) after()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
@@ -0,0 +1,12 @@
|
||||
/** @jsx h */
|
||||
/* eslint-disable react/jsx-key */
|
||||
|
||||
import Plain from '../..'
|
||||
|
||||
export default function (string) {
|
||||
Plain.deserialize(string)
|
||||
}
|
||||
|
||||
export const input = `
|
||||
This is editable plain text, just like a text area.
|
||||
`.trim().repeat(10)
|
@@ -0,0 +1,25 @@
|
||||
/** @jsx h */
|
||||
/* eslint-disable react/jsx-key */
|
||||
|
||||
import Plain from '../..'
|
||||
import h from '../../test/helpers/h'
|
||||
|
||||
export default function (state) {
|
||||
Plain.serialize(state)
|
||||
}
|
||||
|
||||
export const input = (
|
||||
<state>
|
||||
<document>
|
||||
{Array.from(Array(10)).map(() => (
|
||||
<quote>
|
||||
<paragraph>
|
||||
<paragraph>
|
||||
This is editable <b>rich</b> text, <i>much</i> better than a textarea!
|
||||
</paragraph>
|
||||
</paragraph>
|
||||
</quote>
|
||||
))}
|
||||
</document>
|
||||
</state>
|
||||
)
|
Reference in New Issue
Block a user