Skip to content

Commit 50fa6fc

Browse files
committed
feat(zoom-image): add plugin
1 parent 8463f4d commit 50fa6fc

File tree

5 files changed

+52
-4
lines changed

5 files changed

+52
-4
lines changed

build/build.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ var rollup = require('rollup')
22
var buble = require('rollup-plugin-buble')
33
var commonjs = require('rollup-plugin-commonjs')
44
var nodeResolve = require('rollup-plugin-node-resolve')
5+
var string = require('rollup-plugin-string')
56
var uglify = require('rollup-plugin-uglify')
67
var isProd = process.argv[process.argv.length - 1] !== '--dev'
78

89
var build = function (opts) {
910
rollup
1011
.rollup({
1112
entry: 'src/' + opts.entry,
12-
plugins: [buble(), commonjs(), nodeResolve()].concat(opts.plugins || [])
13+
plugins: (opts.plugins || []).concat([buble(), commonjs(), nodeResolve()])
1314
})
1415
.then(function (bundle) {
1516
var dest = 'lib/' + (opts.output || opts.entry)
@@ -36,14 +37,20 @@ var plugins = [
3637
{ name: 'ga', entry: 'ga.js', moduleName: 'GA' },
3738
{ name: 'emoji', entry: 'emoji.js', moduleName: 'Emoji' },
3839
{ name: 'external-script', entry: 'external-script.js', moduleName: 'ExternalScript' },
39-
{ name: 'front-matter', entry: 'front-matter/index.js', moduleName: 'FrontMatter' }
40+
{ name: 'front-matter', entry: 'front-matter/index.js', moduleName: 'FrontMatter' },
41+
{ name: 'zoom-image', entry: 'zoom-image.js', moduleName: 'ZoomImage' }
4042
]
4143

4244
plugins.forEach(item => {
4345
build({
4446
entry: 'plugins/' + item.entry,
4547
output: 'plugins/' + item.name + '.js',
46-
moduleName: 'D.' + item.moduleName
48+
moduleName: 'D.' + item.moduleName,
49+
plugins: [
50+
string({
51+
include: '**/*.css'
52+
})
53+
]
4754
})
4855
})
4956

docs/plugins.md

+8
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,11 @@ If the script on the page is an external one (imports a js file via `src` attrib
8282
```html
8383
<script src="//unpkg.com/docsify/lib/plugins/external-script.js"></script>
8484
```
85+
86+
## Zoom image
87+
88+
Medium's Image Zoom. Based on [zoom-image](https://github.com/egoist/zoom-image).
89+
90+
```html
91+
<script src="//unpkg.com/docsify/lib/plugins/zoom-image.js"></script>
92+
```

docs/zh-cn/plugins.md

+8
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,11 @@
7979
```html
8080
<script src="//unpkg.com/docsify/lib/plugins/external-script.js"></script>
8181
```
82+
83+
## 图片缩放 - Zoom image
84+
85+
Medium's 风格的图片缩放插件. 基于 [zoom-image](https://github.com/egoist/zoom-image)
86+
87+
```html
88+
<script src="//unpkg.com/docsify/lib/plugins/zoom-image.js"></script>
89+
```

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,13 @@
4040
"rollup-plugin-buble": "^0.15.0",
4141
"rollup-plugin-commonjs": "^7.0.0",
4242
"rollup-plugin-node-resolve": "^2.0.0",
43+
"rollup-plugin-string": "^2.0.2",
4344
"rollup-plugin-uglify": "^1.0.1",
4445
"serve-static": "^1.11.1"
4546
},
4647
"dependencies": {
4748
"marked": "^0.3.6",
48-
"prismjs": "^1.5.1"
49+
"prismjs": "^1.5.1",
50+
"zoom-image": "^0.1.4"
4951
}
5052
}

src/plugins/zoom-image.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import zoom from 'zoom-image'
2+
import style from 'zoom-image/css/zoom-image.css'
3+
4+
function install (hook) {
5+
const dom = Docsify.dom
6+
let destroys
7+
8+
// add style
9+
dom.appendTo(dom.head, dom.create('style', style))
10+
11+
hook.doneEach(_ => {
12+
const images = dom.findAll('img:not(.emoji)')
13+
14+
if (Array.isArray(destroys) && destroys.length) {
15+
destroys.forEach(o => o())
16+
destroys = []
17+
}
18+
19+
destroys = images.map(zoom)
20+
})
21+
}
22+
23+
$docsify.plugins = [].concat(install, $docsify.plugins)

0 commit comments

Comments
 (0)