dante-editor-seo 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +40 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +23 -0
- data/Gemfile.lock +140 -0
- data/Procfile +1 -0
- data/README.md +187 -0
- data/ROADMAP.md +10 -0
- data/TODO.md +30 -0
- data/app/assets/fonts/dante/dante.eot +0 -0
- data/app/assets/fonts/dante/dante.svg +14 -0
- data/app/assets/fonts/dante/dante.ttf +0 -0
- data/app/assets/fonts/dante/dante.woff +0 -0
- data/app/assets/fonts/dante/fontello.eot +0 -0
- data/app/assets/fonts/dante/fontello.svg +36 -0
- data/app/assets/fonts/dante/fontello.ttf +0 -0
- data/app/assets/fonts/dante/fontello.woff +0 -0
- data/app/assets/images/dante/media-loading-placeholder.png +0 -0
- data/app/assets/javascripts/dante/dante.js.coffee.erb +10 -0
- data/app/assets/javascripts/dante/editor.js.coffee +1250 -0
- data/app/assets/javascripts/dante/menu.js.coffee +216 -0
- data/app/assets/javascripts/dante/popover.js.coffee +75 -0
- data/app/assets/javascripts/dante/tooltip.js.coffee +82 -0
- data/app/assets/javascripts/dante/tooltip_widget.js.coffee +10 -0
- data/app/assets/javascripts/dante/tooltip_widgets/embed.js.coffee +60 -0
- data/app/assets/javascripts/dante/tooltip_widgets/extract.js.coffee +64 -0
- data/app/assets/javascripts/dante/tooltip_widgets/uploader.js.coffee +248 -0
- data/app/assets/javascripts/dante/utils.js.coffee +235 -0
- data/app/assets/javascripts/dante/view.js.coffee +101 -0
- data/app/assets/javascripts/dante.js +12 -0
- data/app/assets/stylesheets/dante/_animations.scss +54 -0
- data/app/assets/stylesheets/dante/_caption.scss +52 -0
- data/app/assets/stylesheets/dante/_debug.scss +11 -0
- data/app/assets/stylesheets/dante/_fonts.scss +17 -0
- data/app/assets/stylesheets/dante/_graf.scss +238 -0
- data/app/assets/stylesheets/dante/_icons.scss +57 -0
- data/app/assets/stylesheets/dante/_media.scss +39 -0
- data/app/assets/stylesheets/dante/_menu.scss +153 -0
- data/app/assets/stylesheets/dante/_needsorder.scss +209 -0
- data/app/assets/stylesheets/dante/_popover.scss +134 -0
- data/app/assets/stylesheets/dante/_post.scss +69 -0
- data/app/assets/stylesheets/dante/_scaffold.scss +20 -0
- data/app/assets/stylesheets/dante/_tooltip.scss +131 -0
- data/app/assets/stylesheets/dante/_utilities.scss +55 -0
- data/app/assets/stylesheets/dante/_variables.scss +46 -0
- data/app/assets/stylesheets/dante.scss +18 -0
- data/bower.json +44 -0
- data/config.rb +86 -0
- data/config.ru +42 -0
- data/dante-editor.gemspec +19 -0
- data/dist/css/dante-editor.css +1116 -0
- data/dist/fonts/dante/dante.eot +0 -0
- data/dist/fonts/dante/dante.svg +14 -0
- data/dist/fonts/dante/dante.ttf +0 -0
- data/dist/fonts/dante/dante.woff +0 -0
- data/dist/fonts/dante/fontello.eot +0 -0
- data/dist/fonts/dante/fontello.svg +36 -0
- data/dist/fonts/dante/fontello.ttf +0 -0
- data/dist/fonts/dante/fontello.woff +0 -0
- data/dist/images/dante/media-loading-placeholder.png +0 -0
- data/dist/js/dante-editor.js +2878 -0
- data/lib/dante-editor/rails.rb +4 -0
- data/lib/dante-editor/version.rb +5 -0
- data/lib/dante-editor.rb +5 -0
- data/license.md +22 -0
- data/rakefile +2 -0
- data/source/assets/images/dante-editor-logo.png +0 -0
- data/source/assets/images/github-logo.png +0 -0
- data/source/assets/javascripts/all.js +3 -0
- data/source/assets/javascripts/dante-editor.js +1 -0
- data/source/assets/javascripts/deps.js +4 -0
- data/source/assets/javascripts/examples/custom_toolbar.js.coffee +30 -0
- data/source/assets/javascripts/spec.js +2 -0
- data/source/assets/javascripts/specs/cleaner.js.coffee +8 -0
- data/source/assets/javascripts/specs/dante_view.js.coffee +74 -0
- data/source/assets/javascripts/specs/editor.js.coffee +78 -0
- data/source/assets/stylesheets/_layout.scss +51 -0
- data/source/assets/stylesheets/_scaffold.scss +8 -0
- data/source/assets/stylesheets/_tooltips.scss +216 -0
- data/source/assets/stylesheets/all.css.scss +5 -0
- data/source/assets/stylesheets/dante-editor.css.scss +1 -0
- data/source/assets/stylesheets/normalize.css +375 -0
- data/source/custom_toolbar.erb +29 -0
- data/source/embeds.html.erb +27 -0
- data/source/icons/dante.json +143 -0
- data/source/icons/embed.svg +13 -0
- data/source/icons/image.svg +13 -0
- data/source/icons/plus.svg +13 -0
- data/source/icons/video.svg +13 -0
- data/source/index.html.erb +18 -0
- data/source/layouts/layout.erb +26 -0
- data/source/layouts/spec.html.erb +22 -0
- data/source/lists.html.erb +18 -0
- data/source/partials/_content.erb +6 -0
- data/source/partials/_example_1.erb +45 -0
- data/source/partials/_example_2.erb +32 -0
- data/source/partials/_example_3.erb +4 -0
- data/source/partials/_lists.erb +13 -0
- data/source/partials/_readme.markdown +24 -0
- data/source/partials/test/_example_1.erb +39 -0
- data/source/tests/dante_view.html.erb +11 -0
- data/source/tests/index.html.erb +39 -0
- data/tmp/.gitkeep +0 -0
- metadata +151 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9b5f5d2c74c695b75d7a1121ceaa49a7db722ecc
|
4
|
+
data.tar.gz: 2ec5b1781f98584e08b492d2c1e715c4adf438fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1c3faf97997300ddc401d74eae85a77a7d4d622ddd77c9257a86464877dbe456360477122158cb10261dab3c489fa7cfe75d0f232d2285a4e23d694dc5b151f3
|
7
|
+
data.tar.gz: 479dd69c0e8f7a33da199b0516d282ed59f456f99aa0c5b2b18effe9ff86a7d4d1b4620be3530fd121b0f2975cb0d1821f5c1d4556db1ffa865022d30004d922
|
data/.gitignore
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
+
|
7
|
+
# Ignore bundler config
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the build directory
|
11
|
+
/build
|
12
|
+
|
13
|
+
# Ignore Sass' cache
|
14
|
+
/.sass-cache
|
15
|
+
|
16
|
+
# Ignore .DS_store file
|
17
|
+
.DS_Store
|
18
|
+
|
19
|
+
/bower_components
|
20
|
+
/node_modules
|
21
|
+
|
22
|
+
/tmp/images/**/*
|
23
|
+
/app/assets/stylesheets/temp/**/*
|
24
|
+
|
25
|
+
|
26
|
+
/.yardoc
|
27
|
+
/Gemfile.lock
|
28
|
+
/_yardoc/
|
29
|
+
/coverage/
|
30
|
+
/doc/
|
31
|
+
/pkg/
|
32
|
+
/spec/reports/
|
33
|
+
/tmp/
|
34
|
+
*.bundle
|
35
|
+
*.so
|
36
|
+
*.o
|
37
|
+
*.a
|
38
|
+
mkmf.log
|
39
|
+
log
|
40
|
+
.idea
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.0
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# If you have OpenSSL installed, we recommend updating
|
2
|
+
# the following line to use "https"
|
3
|
+
source 'http://rubygems.org'
|
4
|
+
|
5
|
+
#gem "therubyracer"
|
6
|
+
gem "middleman", "~>3.1.4"
|
7
|
+
|
8
|
+
# Live-reloading plugin
|
9
|
+
gem "middleman-livereload", "~> 3.1.0"
|
10
|
+
gem 'middleman-gh-pages'
|
11
|
+
# For faster file watcher updates on Windows:
|
12
|
+
gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]
|
13
|
+
gem "github-markup"
|
14
|
+
gem "redcarpet"
|
15
|
+
gem "sinatra"
|
16
|
+
gem "pry"
|
17
|
+
|
18
|
+
gemspec
|
19
|
+
|
20
|
+
# Cross-templating language block fix for Ruby 1.8
|
21
|
+
platforms :mri_18 do
|
22
|
+
gem "ruby18_source_location"
|
23
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dante-editor (0.0.13)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
activesupport (3.2.19)
|
10
|
+
i18n (~> 0.6, >= 0.6.4)
|
11
|
+
multi_json (~> 1.0)
|
12
|
+
chunky_png (1.3.1)
|
13
|
+
coderay (1.1.0)
|
14
|
+
coffee-script (2.2.0)
|
15
|
+
coffee-script-source
|
16
|
+
execjs
|
17
|
+
coffee-script-source (1.8.0)
|
18
|
+
compass (1.0.1)
|
19
|
+
chunky_png (~> 1.2)
|
20
|
+
compass-core (~> 1.0.1)
|
21
|
+
compass-import-once (~> 1.0.5)
|
22
|
+
rb-fsevent (>= 0.9.3)
|
23
|
+
rb-inotify (>= 0.9)
|
24
|
+
sass (>= 3.3.13, < 3.5)
|
25
|
+
compass-core (1.0.1)
|
26
|
+
multi_json (~> 1.0)
|
27
|
+
sass (>= 3.3.0, < 3.5)
|
28
|
+
compass-import-once (1.0.5)
|
29
|
+
sass (>= 3.2, < 3.5)
|
30
|
+
em-websocket (0.5.1)
|
31
|
+
eventmachine (>= 0.12.9)
|
32
|
+
http_parser.rb (~> 0.6.0)
|
33
|
+
eventmachine (1.0.3)
|
34
|
+
execjs (1.4.1)
|
35
|
+
multi_json (~> 1.0)
|
36
|
+
ffi (1.9.6)
|
37
|
+
github-markup (1.3.0)
|
38
|
+
posix-spawn (~> 0.3.8)
|
39
|
+
haml (4.0.5)
|
40
|
+
tilt
|
41
|
+
hike (1.2.3)
|
42
|
+
http_parser.rb (0.6.0)
|
43
|
+
i18n (0.6.11)
|
44
|
+
kramdown (1.4.2)
|
45
|
+
listen (1.3.1)
|
46
|
+
rb-fsevent (>= 0.9.3)
|
47
|
+
rb-inotify (>= 0.9)
|
48
|
+
rb-kqueue (>= 0.2)
|
49
|
+
method_source (0.8.2)
|
50
|
+
middleman (3.1.6)
|
51
|
+
coffee-script (~> 2.2.0)
|
52
|
+
compass (>= 0.12.2)
|
53
|
+
execjs (~> 1.4.0)
|
54
|
+
haml (>= 3.1.6)
|
55
|
+
kramdown (~> 1.2)
|
56
|
+
middleman-core (= 3.1.6)
|
57
|
+
middleman-more (= 3.1.6)
|
58
|
+
middleman-sprockets (>= 3.1.2)
|
59
|
+
sass (>= 3.1.20)
|
60
|
+
uglifier (~> 2.1.0)
|
61
|
+
middleman-core (3.1.6)
|
62
|
+
activesupport (~> 3.2.6)
|
63
|
+
bundler (~> 1.1)
|
64
|
+
i18n (~> 0.6.1)
|
65
|
+
listen (~> 1.1)
|
66
|
+
rack (>= 1.4.5)
|
67
|
+
rack-test (~> 0.6.1)
|
68
|
+
thor (>= 0.15.2, < 2.0)
|
69
|
+
tilt (~> 1.3.6)
|
70
|
+
middleman-gh-pages (0.0.3)
|
71
|
+
rake (> 0.9.3)
|
72
|
+
middleman-livereload (3.1.1)
|
73
|
+
em-websocket (>= 0.2.0)
|
74
|
+
middleman-core (>= 3.0.2)
|
75
|
+
multi_json (~> 1.0)
|
76
|
+
rack-livereload
|
77
|
+
middleman-more (3.1.6)
|
78
|
+
middleman-sprockets (3.1.4)
|
79
|
+
middleman-core (>= 3.0.14)
|
80
|
+
middleman-more (>= 3.0.14)
|
81
|
+
sprockets (~> 2.1)
|
82
|
+
sprockets-helpers (~> 1.0.0)
|
83
|
+
sprockets-sass (~> 1.0.0)
|
84
|
+
multi_json (1.10.1)
|
85
|
+
posix-spawn (0.3.9)
|
86
|
+
pry (0.10.0)
|
87
|
+
coderay (~> 1.1.0)
|
88
|
+
method_source (~> 0.8.1)
|
89
|
+
slop (~> 3.4)
|
90
|
+
rack (1.5.2)
|
91
|
+
rack-livereload (0.3.15)
|
92
|
+
rack
|
93
|
+
rack-protection (1.5.3)
|
94
|
+
rack
|
95
|
+
rack-test (0.6.2)
|
96
|
+
rack (>= 1.0)
|
97
|
+
rake (10.3.2)
|
98
|
+
rb-fsevent (0.9.4)
|
99
|
+
rb-inotify (0.9.5)
|
100
|
+
ffi (>= 0.5.0)
|
101
|
+
rb-kqueue (0.2.3)
|
102
|
+
ffi (>= 0.5.0)
|
103
|
+
redcarpet (3.2.0)
|
104
|
+
ruby18_source_location (0.2)
|
105
|
+
sass (3.4.6)
|
106
|
+
sinatra (1.4.5)
|
107
|
+
rack (~> 1.4)
|
108
|
+
rack-protection (~> 1.4)
|
109
|
+
tilt (~> 1.3, >= 1.3.4)
|
110
|
+
slop (3.5.0)
|
111
|
+
sprockets (2.12.2)
|
112
|
+
hike (~> 1.2)
|
113
|
+
multi_json (~> 1.0)
|
114
|
+
rack (~> 1.0)
|
115
|
+
tilt (~> 1.1, != 1.3.0)
|
116
|
+
sprockets-helpers (1.0.1)
|
117
|
+
sprockets (~> 2.0)
|
118
|
+
sprockets-sass (1.0.3)
|
119
|
+
sprockets (~> 2.0)
|
120
|
+
tilt (~> 1.1)
|
121
|
+
thor (0.19.1)
|
122
|
+
tilt (1.3.7)
|
123
|
+
uglifier (2.1.2)
|
124
|
+
execjs (>= 0.3.0)
|
125
|
+
multi_json (~> 1.0, >= 1.0.2)
|
126
|
+
|
127
|
+
PLATFORMS
|
128
|
+
ruby
|
129
|
+
|
130
|
+
DEPENDENCIES
|
131
|
+
dante-editor!
|
132
|
+
github-markup
|
133
|
+
middleman (~> 3.1.4)
|
134
|
+
middleman-gh-pages
|
135
|
+
middleman-livereload (~> 3.1.0)
|
136
|
+
pry
|
137
|
+
redcarpet
|
138
|
+
ruby18_source_location
|
139
|
+
sinatra
|
140
|
+
wdm (~> 0.1.0)
|
data/Procfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
app: bundle exec rackup config.ru -p 4567
|
data/README.md
ADDED
@@ -0,0 +1,187 @@
|
|
1
|
+
#Dante Editor
|
2
|
+
|
3
|
+
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/michelson/Dante?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
|
+
|
5
|
+
####Just another Medium editor clone.
|
6
|
+
|
7
|
+
##Motivation:
|
8
|
+
|
9
|
+
So far I have tried all the Medium.com wysiwyg clones out there, these are really great, and each have their pros and cons. [But none of them has all the features that the real medium editor provides.](http://howtox.com/medium-editor-clones-in-js/)
|
10
|
+
so I wonder, How complicated could be write my own Medium wysiwyg clone?
|
11
|
+
|
12
|
+
## Demo:
|
13
|
+
|
14
|
+
[http://michelson.github.io/Dante/](http://michelson.github.io/Dante/)
|
15
|
+
|
16
|
+
Until now I´ve been able to implement the following features:
|
17
|
+
|
18
|
+
## Features:
|
19
|
+
|
20
|
+
+ HTML sanitizer for pasted or loaded text.
|
21
|
+
+ Image upload for paste events.
|
22
|
+
+ Image upload for legacy images on existent texts.
|
23
|
+
+ The medium (+) Tooltip to embed or upload media.
|
24
|
+
+ Tab navigation.
|
25
|
+
+ Embeds:
|
26
|
+
+ Image Uploader with *preview* and caption option.
|
27
|
+
+ Embed data for pasted link through OEmbed services.
|
28
|
+
+ Embed media information for pasted links through OEmbed services.
|
29
|
+
+ Add or remove tooltip buttons with ease with plugin system.
|
30
|
+
+ List creation with shorcuts ie:. 1. , - , 1) with spacebar or return key
|
31
|
+
+ Custom tooltip bottons support
|
32
|
+
+ CSS tries to use the same fonts used in Medium, (if you have already setup those fonts) or fallbacks to open fonts (by Google fonts) or system fonts.
|
33
|
+
+ serif: freight-text-pro fallbacks to Merriweather or Georgia,
|
34
|
+
+ sans: jaf-bernino-sans fallbacks to Open Sans or Lucida Grande
|
35
|
+
|
36
|
+
|
37
|
+
## Usage:
|
38
|
+
|
39
|
+
### HTML:
|
40
|
+
|
41
|
+
```html
|
42
|
+
<div id="editor">
|
43
|
+
your content here
|
44
|
+
</div>
|
45
|
+
```
|
46
|
+
|
47
|
+
### Javascript:
|
48
|
+
|
49
|
+
```html
|
50
|
+
<script type="text/javascript">
|
51
|
+
editor = new Dante.Editor(
|
52
|
+
{
|
53
|
+
el: "#editor",
|
54
|
+
upload_url: "/images.json", //it expect an url string in response like /your/server/image.jpg or http://app.com/images/image.jpg
|
55
|
+
store_url: "/save" //post to save
|
56
|
+
|
57
|
+
}
|
58
|
+
);
|
59
|
+
editor.start()
|
60
|
+
</script>
|
61
|
+
```
|
62
|
+
|
63
|
+
### Configuration options:
|
64
|
+
|
65
|
+
+ **el:** default: #editor
|
66
|
+
+ **debug:** default: false
|
67
|
+
+ **upload_url:** default: /uploads.json
|
68
|
+
+ **upload_callback** default: empty, allows optional way to handle the server response when image is uploaded This is useful when you don't have control on the backend response.
|
69
|
+
+ **oembed_url:** default: http://api.embed.ly/1/oembed?url="
|
70
|
+
+ **extract_url:** default: http://api.embed.ly/1/extract?url="
|
71
|
+
+ **store_url:** default: to none , url to store data with interval
|
72
|
+
+ **store_method** default: to POST , http verb to use when store_url is present.
|
73
|
+
+ **store_interval:** default: 15000 (15 secs), used when store_url is present.
|
74
|
+
+ **spellcheck:** default: false
|
75
|
+
+ **default_loading_placeholder:** image placeholder to show when uploaded/pasted images are loading , defaults to a grey background
|
76
|
+
+ **disable_title** default: false, will hide the initial heading placeholder for initial text
|
77
|
+
+ **title_placeholder** default: 'Title'
|
78
|
+
+ **title** default: none, pass a pre-existing title to the editor here
|
79
|
+
+ **body_placeholder** default: 'Tell your story…'
|
80
|
+
+ **embed_placeholder** default: 'Paste a YouTube, Vine, Vimeo, or other video link, and press Enter'
|
81
|
+
+ **extract_placeholder** default: 'Paste a link to embed content from another site (e.g. Twitter) and press Enter'
|
82
|
+
+ **base_widgets:** default: ["uploader", "embed", "embed-extract"],
|
83
|
+
+ **extra_tooltip_widgets:** and array of new Dante.TooltipWidget instances.
|
84
|
+
|
85
|
+
### Initialization
|
86
|
+
|
87
|
+
#### title
|
88
|
+
Use the title option in the initializer to pass a title to Dante.
|
89
|
+
|
90
|
+
#### body
|
91
|
+
Use the following code to get your text into the Dante editor's body:
|
92
|
+
```html
|
93
|
+
|
94
|
+
<div id="editor editable" > <%= clean_dante_post( @post.excerpt ).try(:html_safe) %> </div>
|
95
|
+
|
96
|
+
```
|
97
|
+
|
98
|
+
### Rails / AssetPippeline
|
99
|
+
|
100
|
+
in Gemfile
|
101
|
+
|
102
|
+
```gem "dante-editor"```
|
103
|
+
|
104
|
+
### stylesheets:
|
105
|
+
|
106
|
+
```@import "dante";```
|
107
|
+
|
108
|
+
### javascripts:
|
109
|
+
|
110
|
+
```//= require 'dante'```
|
111
|
+
|
112
|
+
## Disclaimer:
|
113
|
+
|
114
|
+
This Library will work fine on latest versions of Chrome/Safari/FF/IE.
|
115
|
+
We don't have any intention to target all browsers versions, really... if you like this library and you need backward compatibility with an specific version you can submit a patch to help with the development or just upgrade your shitty browser :D
|
116
|
+
|
117
|
+
**BTW , this library is an official beta release, so there are known bugs that we are currently working on.
|
118
|
+
see TODO list below.**
|
119
|
+
|
120
|
+
## Dependencies:
|
121
|
+
|
122
|
+
Some dependencies are required in order to Dante editor works properly:
|
123
|
+
|
124
|
+
+ Jquery
|
125
|
+
+ [Underscore](https://github.com/documentcloud/underscore)
|
126
|
+
+ [Sanitize.js](https://github.com/gbirke/sanitize.js)
|
127
|
+
|
128
|
+
|
129
|
+
**Drop underscore and jquery dependencies are on our roadmap.**
|
130
|
+
|
131
|
+
|
132
|
+
## Development:
|
133
|
+
|
134
|
+
There is a web app for development to work with the source files and make the proper tests. To use application:
|
135
|
+
|
136
|
+
### Installation:
|
137
|
+
|
138
|
+
+ install ruby
|
139
|
+
+ execute `bundle install`
|
140
|
+
+ execute `bower install`
|
141
|
+
|
142
|
+
### Start app:
|
143
|
+
|
144
|
+
`bundle exec rackup config.ru` and visit http://localhost:9292
|
145
|
+
|
146
|
+
or
|
147
|
+
|
148
|
+
`bundle exec middleman ` (this is without upload server)
|
149
|
+
and visit localhost:4567
|
150
|
+
|
151
|
+
or
|
152
|
+
|
153
|
+
`foreman start` and visit http://localhost:9292
|
154
|
+
|
155
|
+
### Tests:
|
156
|
+
|
157
|
+
tests are located in source/tests and /source/assets/spec folder and accessible by visit host/tests
|
158
|
+
|
159
|
+
## TODO
|
160
|
+
|
161
|
+
[read todo](./TODO.md)
|
162
|
+
|
163
|
+
## MAINTAINERS:
|
164
|
+
|
165
|
+
+ [Miguel Michelson](http://github.com/michelson)
|
166
|
+
+ [Cristian Ferrari](http://github.com/cristianferrarig)
|
167
|
+
|
168
|
+
### CONTRIBUTORS
|
169
|
+
|
170
|
+
Big kudos to our valued contributors. Check them all at:
|
171
|
+
|
172
|
+
https://github.com/michelson/dante/graphs/contributors
|
173
|
+
|
174
|
+
### ALTERNATIVES
|
175
|
+
|
176
|
+
+ https://github.com/sofish/pen
|
177
|
+
+ https://github.com/orthes/medium-editor-insert-plugin
|
178
|
+
|
179
|
+
### ACKNOWLEDGMENTS:
|
180
|
+
|
181
|
+
+ Inline menu features was written taking some ideas and code from [pen.js](https://github.com/sofish/pen)
|
182
|
+
+ [Sanitize.js](https://github.com/gbirke/sanitize.js) allows us to clean HTML like pros.
|
183
|
+
+ No animals were harmed in the making of this ~~film~~ wysiwyg
|
184
|
+
|
185
|
+
### LICENSE
|
186
|
+
|
187
|
+
[Licensed under MIT.](./license.md) 2014
|
data/ROADMAP.md
ADDED
data/TODO.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
#TODO:
|
3
|
+
|
4
|
+
+ GENERALS
|
5
|
+
+ FF in case markup breaks (like linebreak with br or unwraped text when typing) just rewrap from current range.
|
6
|
+
|
7
|
+
+ SANITIZE PROCESS
|
8
|
+
|
9
|
+
+ MENU
|
10
|
+
+ Filter inner tags (except a, b, i ... ) when convert to blockquote
|
11
|
+
+ blockquote works like crap
|
12
|
+
|
13
|
+
+ DELETE
|
14
|
+
+ handle remove from PRE tag, it set rare span, just remove it
|
15
|
+
+ clean node when remove one
|
16
|
+
+ don't remove entire graf-image when delete text from caption
|
17
|
+
+ handle delete from link embeds . when text is empty , remove embed on next del key press.
|
18
|
+
|
19
|
+
+ IMAGES:
|
20
|
+
+ upload, show progress, complete
|
21
|
+
+ handle enter (linebreak) when selected in caption (build new P)
|
22
|
+
+ Fix problem in FF when linebreak or arrow down to new P , is typing backwards!! (could be a range 1 char problem ?)
|
23
|
+
|
24
|
+
+ EMBEDS:
|
25
|
+
+ fix navigation arrows when up or down through them
|
26
|
+
+ problem FF when linebreak or arrow down to new P , is typing backwards!! (could be a range 1 char problem ?)
|
27
|
+
|
28
|
+
+ SUBMIT:
|
29
|
+
get clean version of content
|
30
|
+
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<metadata>Generated by IcoMoon</metadata>
|
5
|
+
<defs>
|
6
|
+
<font id="icomoon" horiz-adv-x="1024">
|
7
|
+
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8
|
+
<missing-glyph horiz-adv-x="1024" />
|
9
|
+
<glyph unicode=" " d="" horiz-adv-x="512" />
|
10
|
+
<glyph unicode="" d="M256 759.559v-623.174c0-70.118 47.316-95.291 105.683-55.222l428.634 294.258c58.622 40.244 58.367 105.034 0 145.103l-428.634 294.258c-58.622 40.244-105.683 15.345-105.683-55.222zM320 766.664l426.195-293.488c30.527-20.25 29.832-31 0-51.070l-426.195-295.039v639.598z" />
|
11
|
+
<glyph unicode="" d="M294.4 768l0.489 2.446c13.868 69.342 82.599 125.554 152.977 125.554h128.267c70.619 0 139.014-55.74 152.977-125.554l0.489-2.446h166.78c70.483 0 127.62-57.611 127.62-127.489v-449.022c0-70.41-57.249-127.489-127.62-127.489h-768.76c-70.483 0-127.62 57.611-127.62 127.489v449.022c0 70.41 57.249 127.489 127.62 127.489h166.78zM347.123 704h-218.685c-35.641 0-64.438-28.583-64.438-63.843v-448.314c0-35.279 28.85-63.843 64.438-63.843h767.124c35.641 0 64.438 28.583 64.438 63.843v448.314c0 35.279-28.85 63.843-64.438 63.843h-218.816l-13.864 65.375c-7.263 34.25-41.874 62.625-77.145 62.625h-147.627c-35.433 0-69.805-28.038-77.134-62.625l-13.853-65.375zM320 448c0-105.823 85.961-192 192-192 105.823 0 192 85.961 192 192 0 105.823-85.961 192-192 192-105.823 0-192-85.961-192-192zM384 448c0 70.692 56.815 128 128 128 70.692 0 128-56.815 128-128 0-70.692-56.815-128-128-128-70.692 0-128 56.815-128 128z" />
|
12
|
+
<glyph unicode="" d="M544 416v-375.294c0-17.673-14.327-32-32-32s-32 14.327-32 32v375.294h-375.294c-17.673 0-32 14.327-32 32s14.327 32 32 32h375.294v375.294c0 17.673 14.327 32 32 32s32-14.327 32-32v-375.294h375.294c17.673 0 32-14.327 32-32s-14.327-32-32-32h-375.294z" />
|
13
|
+
<glyph unicode="" d="M882.24 449.498l-235.855 234.241c-12.497 12.411-12.497 32.534 0 44.945s32.758 12.411 45.255 0l253.704-251.968c1.872-1.201 3.645-2.616 5.284-4.244 12.497-12.411 12.497-32.534 0-44.945l-257.992-256.226c-12.497-12.411-32.758-12.411-45.255 0s-12.497 32.534 0 44.945l234.859 233.252zM67.842 461.229c-6.562-12.128-4.719-27.599 5.53-37.848 2.863-2.863 6.133-5.070 9.624-6.621l249.364-249.364c12.497-12.497 32.758-12.497 45.255 0s12.497 32.758 0 45.255l-234.859 234.859 233.863 233.863c12.497 12.497 12.497 32.758 0 45.255s-32.758 12.497-45.255 0l-251.712-251.712c-1.872-1.209-3.645-2.634-5.284-4.273-2.805-2.805-4.981-6.002-6.527-9.414v0 0z" />
|
14
|
+
</font></defs></svg>
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<metadata>Copyright (C) 2012 by original authors @ fontello.com</metadata>
|
5
|
+
<defs>
|
6
|
+
<font id="fontello" horiz-adv-x="1000" >
|
7
|
+
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
8
|
+
<missing-glyph horiz-adv-x="1000" />
|
9
|
+
<glyph glyph-name="location" unicode="" d="M429 493q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m143 0q0-61-18-100l-203-432q-9-18-27-29t-38-11-38 11-26 29l-204 432q-18 39-18 100 0 118 84 202t202 84 202-84 84-202z" horiz-adv-x="571.429" />
|
10
|
+
<glyph glyph-name="fit" unicode="" d="M429 314l0-250q0-15-11-25t-25-11-25 11l-80 80-185-185q-6-6-13-6t-13 6l-64 64q-6 6-6 13t6 13l185 185-80 80q-11 11-11 25t11 25 25 11l250 0q15 0 25-11t11-25z m421 375q0-7-6-13l-185-185 80-80q11-11 11-25t-11-25-25-11l-250 0q-15 0-25 11t-11 25l0 250q0 15 11 25t25 11 25-11l80-80 185 185q6 6 13 6t13-6l64-64q6-6 6-13z" horiz-adv-x="857.143" />
|
11
|
+
<glyph glyph-name="bold" unicode="" d="M310 1q42-18 78-18 73 0 121 23t68 63q21 39 21 101 0 64-23 100-32 52-79 70-45 18-138 18-41 0-56-6l0-80-1-97 2-151q0-8 7-25z m-8 416q24-4 61-4 98 0 147 36t50 125q0 62-47 104t-142 42q-29 0-73-7 0-25 1-43 4-68 3-156l-1-55q0-24 1-43z m-302-496l1 52q25 5 38 7 43 7 69 17 9 15 12 28 5 37 5 108l-1 277q-3 143-5 225-1 49-6 61-1 2-7 7-10 7-39 8-17 1-64 7l-2 46 145 3 212 7 25 1q3 0 8 0t8 0q1 0 12 0t23 0l41 0q49 0 107-15 24-7 54-22 32-16 57-42t36-58 12-68q0-39-18-71t-53-59q-15-11-84-43 99-23 149-81 51-59 51-132 0-42-16-90-12-35-40-65-37-40-78-60t-113-33q-46-8-110-6l-110 2q-47 1-166-6-18-2-152-6z" horiz-adv-x="785.714" />
|
12
|
+
<glyph glyph-name="italic" unicode="" d="M0-77l9 47q2 1 43 11 42 11 65 22 16 21 23 56l15 78 31 150 7 36q4 25 9 47t9 37 7 26 5 17 2 6l16 88 9 35 12 75 4 28 0 21q-23 12-80 16-16 1-21 2l11 57 177-8q22-1 41-1 37 0 119 5 18 1 38 3t20 1q-1-11-3-21-4-16-7-28-31-11-61-17-36-9-56-17-7-17-13-49-5-25-7-46-25-111-37-171l-34-174-21-88-24-131-7-25q-1-4 1-15 36-8 66-12 20-3 37-6-1-16-4-32-4-17-5-23-10 0-13-1-13-1-23-1-5 0-16 2t-81 9l-110 1q-23 1-97-6-41-4-55-5z" horiz-adv-x="571.429" />
|
13
|
+
<glyph glyph-name="justifyleft" unicode="" d="M1000 100l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z m-214 214l0-71q0-15-11-25t-25-11l-714 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l714 0q15 0 25-11t11-25z m143 214l0-71q0-15-11-25t-25-11l-857 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l857 0q15 0 25-11t11-25z m-214 214l0-71q0-15-11-25t-25-11l-643 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l643 0q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
14
|
+
<glyph glyph-name="justifycenter" unicode="" d="M1000 100l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z m-214 214l0-71q0-15-11-25t-25-11l-500 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l500 0q15 0 25-11t11-25z m143 214l0-71q0-15-11-25t-25-11l-786 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l786 0q15 0 25-11t11-25z m-214 214l0-71q0-15-11-25t-25-11l-357 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l357 0q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
15
|
+
<glyph glyph-name="justifyright" unicode="" d="M1000 100l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z m0 214l0-71q0-15-11-25t-25-11l-714 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l714 0q15 0 25-11t11-25z m0 214l0-71q0-15-11-25t-25-11l-857 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l857 0q15 0 25-11t11-25z m0 214l0-71q0-15-11-25t-25-11l-643 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l643 0q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
16
|
+
<glyph glyph-name="justifyfull" unicode="" d="M1000 100l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z m0 214l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z m0 214l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z m0 214l0-71q0-15-11-25t-25-11l-929 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l929 0q15 0 25-11t11-25z" horiz-adv-x="1000" />
|
17
|
+
<glyph glyph-name="outdent" unicode="" d="M214 546l0-321q0-7-5-13t-13-5q-8 0-13 5l-161 161q-5 5-5 13t5 13l161 161q5 5 13 5 7 0 13-5t5-13z m786-429l0-107q0-7-5-13t-13-5l-964 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l964 0q7 0 13-5t5-13z m0 214l0-107q0-7-5-13t-13-5l-607 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l607 0q7 0 13-5t5-13z m0 214l0-107q0-7-5-13t-13-5l-607 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l607 0q7 0 13-5t5-13z m0 214l0-107q0-7-5-13t-13-5l-964 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l964 0q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
18
|
+
<glyph glyph-name="indent" unicode="" d="M196 386q0-8-5-13l-161-161q-5-5-13-5-7 0-13 5t-5 13l0 321q0 7 5 13t13 5q8 0 13-5l161-161q5-5 5-13z m804-268l0-107q0-7-5-13t-13-5l-964 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l964 0q7 0 13-5t5-13z m0 214l0-107q0-7-5-13t-13-5l-607 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l607 0q7 0 13-5t5-13z m0 214l0-107q0-7-5-13t-13-5l-607 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l607 0q7 0 13-5t5-13z m0 214l0-107q0-7-5-13t-13-5l-964 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l964 0q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
19
|
+
<glyph glyph-name="mode" unicode="" d="M429 46l0 607q-83 0-152-41t-110-110-41-152 41-152 110-110 152-41z m429 304q0-117-57-215t-156-156-215-57-215 57-156 156-57 215 57 215 156 156 215 57 215-57 156-156 57-215z" horiz-adv-x="857.143" />
|
20
|
+
<glyph glyph-name="fullscreen" unicode="" d="M716 548l-198-198 198-198 80 80q16 17 39 8 22-9 22-33l0-250q0-15-11-25t-25-11l-250 0q-23 0-33 22-9 22 8 39l80 80-198 198-198-198 80-80q17-17 8-39t-33-22l-250 0q-15 0-25 11t-11 25l0 250q0 23 22 33 22 9 39-8l80-80 198 198-198 198-80-80q-11-11-25-11-7 0-13 3-22 9-22 33l0 250q0 15 11 25t25 11l250 0q23 0 33-22 9-22-8-39l-80-80 198-198 198 198-80 80q-17 17-8 39t33 22l250 0q15 0 25-11t11-25l0-250q0-23-22-33-7-3-14-3-15 0-25 11z" horiz-adv-x="857.143" />
|
21
|
+
<glyph glyph-name="insertunorderedlist" unicode="" d="M214 64q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m0 286q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232l0-107q0-7-5-13t-13-5l-679 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l679 0q7 0 13-5t5-13z m-786 518q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232l0-107q0-7-5-13t-13-5l-679 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l679 0q7 0 13-5t5-13z m0 286l0-107q0-7-5-13t-13-5l-679 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l679 0q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
22
|
+
<glyph glyph-name="insertorderedlist" unicode="" d="M213-54q0-45-30-70t-76-26q-59 0-96 37l32 49q27-25 59-25 16 0 28 8t12 24q0 36-59 31l-15 31q4 6 18 24t24 30 21 21l0 1q-9 0-27-1t-27-1l0-30-59 0 0 85 186 0 0-49-53-64q28-7 45-27t17-49z m1 350l0-89-202 0q-3 20-3 30 0 28 13 52t32 38 37 27 32 24 13 25q0 14-8 21t-22 8q-26 0-45-32l-47 33q13 28 40 44t59 16q41 0 69-23t28-63q0-28-19-51t-42-36-42-28-20-29l71 0 0 33 59 0z m786-178l0-107q0-7-5-13t-13-5l-679 0q-7 0-13 5t-5 13l0 107q0 8 5 13t13 5l679 0q7 0 13-5t5-13z m-786 502l0-55-187 0 0 55 60 0q0 23 0 68t0 68l0 7-1 0q-4-9-28-30l-40 42 76 71 59 0 0-225 60 0z m786-216l0-107q0-7-5-13t-13-5l-679 0q-7 0-13 5t-5 13l0 107q0 8 5 13t13 5l679 0q7 0 13-5t5-13z m0 286l0-107q0-7-5-13t-13-5l-679 0q-7 0-13 5t-5 13l0 107q0 7 5 13t13 5l679 0q7 0 13-5t5-13z" horiz-adv-x="1000" />
|
23
|
+
<glyph glyph-name="strikethrough" unicode="" d="M982 350q8 0 13-5t5-13l0-36q0-8-5-13t-13-5l-964 0q-8 0-13 5t-5 13l0 36q0 8 5 13t13 5l964 0z m-713 36q-16 20-28 45-27 54-27 105 0 101 75 172 74 71 219 71 28 0 93-11 37-7 99-27 6-21 12-66 8-69 8-102 0-10-3-25l-7-2-47 3-8 1q-28 83-57 114-49 51-117 51-64 0-102-33-37-32-37-81 0-41 37-78t156-72q39-11 97-37 32-16 53-29l-415 0z m283-143l229 0q4-22 4-51 0-62-23-118-13-31-40-58-21-20-61-45-45-27-85-37-45-12-113-12-64 0-109 13l-78 22q-32 9-40 16-4 4-4 12l0 7q0 60-1 87-1 17 0 38l1 21 0 25 57 1q8-19 17-40t13-31 7-15q20-32 45-52 24-20 59-32 33-12 74-12 36 0 78 15 43 15 68 48 26 34 26 72 0 47-45 88-19 16-76 40z" horiz-adv-x="1000" />
|
24
|
+
<glyph glyph-name="underline" unicode="" d="M27 726q-21 1-25 2l-2 49q7 1 22 1 33 0 62-2 74-4 93-4 48 0 94 2 65 2 81 3 31 0 48 1l-1-8 1-36 0-5q-33-5-69-5-33 0-44-14-7-8-7-74 0-7 0-18t0-14l1-128 8-156q3-69 28-113 20-33 54-51 49-26 99-26 58 0 107 16 31 10 55 28 27 20 36 36 20 31 30 64 12 41 12 128 0 44-2 71t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48 47 0 114-6q42-2 109 6l10-1q3-21 3-28 0-4-2-17-25-7-47-7-41-6-44-9-8-8-8-23 0-4 1-15t1-17q4-11 12-221 3-109-8-170-8-42-23-68-21-36-62-69-42-32-102-50-61-18-142-18-93 0-158 26-66 26-100 68t-46 109q-9 45-9 132l0 186q0 105-9 119-14 20-82 22z m830-786l0 36q0 8-5 13t-13 5l-821 0q-8 0-13-5t-5-13l0-36q0-8 5-13t13-5l821 0q8 0 13 5t5 13z" horiz-adv-x="857.143" />
|
25
|
+
<glyph glyph-name="blockquote" unicode="" d="M429 671l0-393q0-58-23-111t-61-91-91-61-111-23l-36 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l36 0q59 0 101 42t42 101l0 18q0 22-16 38t-38 16l-125 0q-45 0-76 31t-31 76l0 214q0 45 31 76t76 31l214 0q45 0 76-31t31-76z m500 0l0-393q0-58-23-111t-61-91-91-61-111-23l-36 0q-15 0-25 11t-11 25l0 71q0 15 11 25t25 11l36 0q59 0 101 42t42 101l0 18q0 22-16 38t-38 16l-125 0q-45 0-76 31t-31 76l0 214q0 45 31 76t76 31l214 0q45 0 76-31t31-76z" horiz-adv-x="928.571" />
|
26
|
+
<glyph glyph-name="undo" unicode="" d="M1000 225q0-93-71-252-2-4-6-13t-8-17-7-12q-7-9-16-9-8 0-13 6t-5 14q0 5 1 15t1 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3l-125 0 0-143q0-15-11-25t-25-11-25 11l-286 286q-11 11-11 25t11 25l286 286q11 11 25 11t25-11 11-25l0-143 125 0q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" />
|
27
|
+
<glyph glyph-name="code" unicode="" d="M344 69l-28-28q-6-6-13-6t-13 6l-260 260q-6 6-6 13t6 13l260 260q6 6 13 6t13-6l28-28q6-6 6-13t-6-13l-219-219 219-219q6-6 6-13t-6-13z m330 595l-208-720q-2-7-9-11t-13-1l-35 9q-7 2-11 9t-1 14l208 720q2 7 9 11t13 1l35-9q7-2 11-9t1-14z m367-363l-260-260q-6-6-13-6t-13 6l-28 28q-6 6-6 13t6 13l219 219-219 219q-6 6-6 13t6 13l28 28q6 6 13 6t13-6l260-260q6-6 6-13t-6-13z" horiz-adv-x="1071.429" />
|
28
|
+
<glyph glyph-name="unlink" unicode="" d="M245 141l-143-143q-6-5-13-5t-13 5q-5 6-5 13t5 13l143 143q6 5 13 5t13-5q5-6 5-13t-5-13z m94-23l0-179q0-8-5-13t-13-5-13 5-5 13l0 179q0 8 5 13t13 5 13-5 5-13z m-125 125q0-8-5-13t-13-5l-179 0q-8 0-13 5t-5 13 5 13 13 5l179 0q8 0 13-5t5-13z m705-71q0-67-47-113l-82-81q-46-46-113-46-68 0-114 47l-186 187q-12 12-23 31l133 10 152-153q15-15 38-15t38 15l82 81q16 16 16 37 0 22-16 38l-153 153 10 133q20-12 31-23l187-187q47-48 47-114z m-344 404l-133-10-152 153q-16 16-38 16t-38-15l-82-81q-16-16-16-37 0-22 16-38l153-153-10-134q-20 12-31 23l-187 187q-47 48-47 114 0 67 47 113l82 81q46 46 113 46 68 0 114-47l186-187q12-12 23-31z m353-47q0-8-5-13t-13-5l-179 0q-8 0-13 5t-5 13 5 13 13 5l179 0q8 0 13-5t5-13z m-304 304l0-179q0-8-5-13t-13-5-13 5-5 13l0 179q0 8 5 13t13 5 13-5 5-13z m227-84l-143-143q-6-5-13-5t-13 5q-5 6-5 13t5 13l143 143q6 5 13 5t13-5q5-6 5-13t-5-13z" horiz-adv-x="928.571" />
|
29
|
+
<glyph glyph-name="superscript" unicode="" d="M501 86l0-93-138 0-89 141-13 23q-4 5-6 12l-2 0-5-12q-6-11-14-25l-86-140-144 0 0 93 71 0 110 162-103 152-76 0 0 94 154 0 78-127q1-2 13-23 4-5 6-12l2 0q2 5 6 12l14 23 78 127 143 0 0-94-70 0-103-149 114-165 61 0z m355 379l0-115-287 0-2 15q-2 16-2 26 0 36 15 65t36 48 47 36 47 30 36 30 15 36q0 21-16 35t-39 14q-28 0-54-22-8-6-20-21l-59 51q15 21 35 37 46 36 105 36 61 0 99-33t38-88q0-31-14-57t-35-43-45-33-46-28-37-29-17-35l129 0 0 45 70 0z" horiz-adv-x="857.143" />
|
30
|
+
<glyph glyph-name="subscript" unicode="" d="M501 86l0-93-138 0-89 141-13 23q-4 5-6 12l-2 0-5-12q-6-11-14-25l-86-140-144 0 0 93 71 0 110 162-103 152-76 0 0 94 154 0 78-127q1-2 13-23 4-5 6-12l2 0q2 5 6 12l14 23 78 127 143 0 0-94-70 0-103-149 114-165 61 0z m357-121l0-115-287 0-2 15q-2 25-2 26 0 36 15 65t36 48 47 36 47 30 36 30 15 36q0 21-16 35t-39 14q-28 0-54-22-8-6-20-21l-59 51q15 21 35 37 45 36 105 36 61 0 99-33t38-88q0-37-19-66t-47-48-56-35-49-35-23-41l129 0 0 45 70 0z" horiz-adv-x="857.143" />
|
31
|
+
<glyph glyph-name="inserthorizontalrule" unicode="" d="M214 439l0-107q0-22-16-38t-38-16l-107 0q-22 0-38 16t-16 38l0 107q0 22 16 38t38 16l107 0q22 0 38-16t16-38z m286 0l0-107q0-22-16-38t-38-16l-107 0q-22 0-38 16t-16 38l0 107q0 22 16 38t38 16l107 0q22 0 38-16t16-38z m286 0l0-107q0-22-16-38t-38-16l-107 0q-22 0-38 16t-16 38l0 107q0 22 16 38t38 16l107 0q22 0 38-16t16-38z" horiz-adv-x="785.714" />
|
32
|
+
<glyph glyph-name="pin" unicode="" d="M268 368l0 250q0 8-5 13t-13 5-13-5-5-13l0-250q0-8 5-13t13-5 13 5 5 13z m375-196q0-15-11-25t-25-11l-239 0-28-270q-1-7-6-11t-11-5l-1 0q-15 0-18 15l-42 271-225 0q-15 0-25 11t-11 25q0 69 44 124t99 55l0 286q-29 0-50 21t-21 50 21 50 50 21l357 0q29 0 50-21t21-50-21-50-50-21l0-286q55 0 99-55t44-124z" horiz-adv-x="642.857" />
|
33
|
+
<glyph glyph-name="createlink" unicode="" d="M812 171q0 22-16 38l-116 116q-16 16-38 16-23 0-40-18 2-2 11-10t12-12 8-11 7-14 2-15q0-22-16-38t-38-16q-8 0-15 2t-14 7-11 8-12 12-10 11q-18-17-18-41 0-22 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-392 393q0 22-16 38l-115 116q-16 16-38 16t-38-15l-82-81q-16-16-16-37 0-22 16-38l116-116q15-15 38-15t40 17q-2 2-11 10t-12 12-8 11-7 14-2 15q0 22 16 38t38 16q8 0 15-2t14-7 11-8 12-12 10-11q18 17 18 41z m499-393q0-67-47-113l-82-81q-46-46-113-46-68 0-114 47l-115 116q-46 46-46 113 0 69 49 117l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 81q46 46 113 46 68 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.571" />
|
34
|
+
</font>
|
35
|
+
</defs>
|
36
|
+
</svg>
|
Binary file
|
Binary file
|
Binary file
|