Bug fix, items per pages all content

This commit is contained in:
Diego Najar 2018-10-18 19:21:57 +02:00
parent 2081c74259
commit 1b5c84fea7
317 changed files with 24827 additions and 1 deletions

View File

@ -47,7 +47,6 @@ class dbList extends dbJSON
// Returns all the items from the list // Returns all the items from the list
if ($numberOfItems==-1) { if ($numberOfItems==-1) {
// Invert keys to values, is necesary returns as key the key pages // Invert keys to values, is necesary returns as key the key pages
$list = array_flip($list);
return $list; return $list;
} }

View File

@ -123,6 +123,7 @@ function buildPagesFor($for, $categoryKey=false, $tagKey=false) {
// continue // continue
} }
} }
return $content; return $content;
} }

1
bl-plugins/quill/css/medium-editor.min.css vendored Executable file
View File

@ -0,0 +1 @@
.medium-editor-anchor-preview,.medium-editor-toolbar{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;z-index:2000}@-webkit-keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}100%{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}@keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}100%{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}.medium-editor-anchor-preview{left:0;line-height:1.4;max-width:280px;position:absolute;text-align:center;top:0;word-break:break-all;word-wrap:break-word;visibility:hidden}.medium-editor-anchor-preview a{color:#fff;display:inline-block;margin:5px 5px 10px}.medium-editor-placeholder-relative:after,.medium-editor-placeholder:after{content:attr(data-placeholder)!important;white-space:pre;padding:inherit;margin:inherit;font-style:italic}.medium-editor-anchor-preview-active{visibility:visible}.medium-editor-dragover{background:#ddd}.medium-editor-image-loading{-webkit-animation:medium-editor-image-loading 1s infinite ease-in-out;animation:medium-editor-image-loading 1s infinite ease-in-out;background-color:#333;border-radius:100%;display:inline-block;height:40px;width:40px}.medium-editor-placeholder{position:relative}.medium-editor-placeholder:after{position:absolute;left:0;top:0}.medium-editor-placeholder-relative,.medium-editor-placeholder-relative:after{position:relative}.medium-toolbar-arrow-over:before,.medium-toolbar-arrow-under:after{border-style:solid;content:'';display:block;height:0;left:50%;margin-left:-8px;position:absolute;width:0}.medium-toolbar-arrow-under:after{border-width:8px 8px 0}.medium-toolbar-arrow-over:before{border-width:0 8px 8px;top:-8px}.medium-editor-toolbar{left:0;position:absolute;top:0;visibility:hidden}.medium-editor-toolbar ul{margin:0;padding:0}.medium-editor-toolbar li{float:left;list-style:none;margin:0;padding:0}.medium-editor-toolbar li button{box-sizing:border-box;cursor:pointer;display:block;font-size:14px;line-height:1.33;margin:0;padding:15px;text-decoration:none}.medium-editor-toolbar li button:focus{outline:0}.medium-editor-toolbar li .medium-editor-action-underline{text-decoration:underline}.medium-editor-toolbar li .medium-editor-action-pre{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;font-weight:100;padding:15px 0}.medium-editor-toolbar-active{visibility:visible}.medium-editor-sticky-toolbar{position:fixed;top:1px}.medium-editor-relative-toolbar{position:relative}.medium-editor-toolbar-active.medium-editor-stalker-toolbar{-webkit-animation:medium-editor-pop-upwards 160ms forwards linear;animation:medium-editor-pop-upwards 160ms forwards linear}.medium-editor-action-bold{font-weight:bolder}.medium-editor-action-italic{font-style:italic}.medium-editor-toolbar-form{display:none}.medium-editor-toolbar-form a,.medium-editor-toolbar-form input{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.medium-editor-toolbar-form .medium-editor-toolbar-form-row{line-height:14px;margin-left:5px;padding-bottom:5px}.medium-editor-toolbar-form .medium-editor-toolbar-input,.medium-editor-toolbar-form label{border:none;box-sizing:border-box;font-size:14px;margin:0;padding:6px;width:316px;display:inline-block}.medium-editor-toolbar-form .medium-editor-toolbar-input:focus,.medium-editor-toolbar-form label:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;outline:0}.medium-editor-toolbar-form a{display:inline-block;font-size:24px;font-weight:bolder;margin:0 10px;text-decoration:none}.medium-editor-toolbar-form-active{display:block}.medium-editor-toolbar-actions:after{clear:both;content:"";display:table}.medium-editor-element{word-wrap:break-word;min-height:30px}.medium-editor-element img{max-width:100%}.medium-editor-element sub{vertical-align:sub}.medium-editor-element sup{vertical-align:super}.medium-editor-hidden{display:none}

View File

@ -0,0 +1,63 @@
.medium-toolbar-arrow-under:after {
border-color: #242424 transparent transparent transparent;
top: 50px; }
.medium-toolbar-arrow-over:before {
border-color: transparent transparent #242424 transparent;
top: -8px; }
.medium-editor-toolbar {
background-color: #242424;
background: -webkit-linear-gradient(top, #242424, rgba(36, 36, 36, 0.75));
background: linear-gradient(to bottom, #242424, rgba(36, 36, 36, 0.75));
border: 1px solid #000;
border-radius: 5px;
box-shadow: 0 0 3px #000; }
.medium-editor-toolbar li button {
background-color: #242424;
background: -webkit-linear-gradient(top, #242424, rgba(36, 36, 36, 0.89));
background: linear-gradient(to bottom, #242424, rgba(36, 36, 36, 0.89));
border: 0;
border-right: 1px solid #000;
border-left: 1px solid #333;
border-left: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
color: #fff;
height: 50px;
min-width: 50px;
-webkit-transition: background-color .2s ease-in;
transition: background-color .2s ease-in; }
.medium-editor-toolbar li button:hover {
background-color: #000;
color: yellow; }
.medium-editor-toolbar li .medium-editor-button-first {
border-bottom-left-radius: 5px;
border-top-left-radius: 5px; }
.medium-editor-toolbar li .medium-editor-button-last {
border-bottom-right-radius: 5px;
border-top-right-radius: 5px; }
.medium-editor-toolbar li .medium-editor-button-active {
background-color: #000;
background: -webkit-linear-gradient(top, #242424, rgba(0, 0, 0, 0.89));
background: linear-gradient(to bottom, #242424, rgba(0, 0, 0, 0.89));
color: #fff; }
.medium-editor-toolbar-form {
background: #242424;
border-radius: 5px;
color: #999; }
.medium-editor-toolbar-form .medium-editor-toolbar-input {
background: #242424;
box-sizing: border-box;
color: #ccc;
height: 50px; }
.medium-editor-toolbar-form a {
color: #fff; }
.medium-editor-toolbar-anchor-preview {
background: #242424;
border-radius: 5px;
color: #fff; }
.medium-editor-placeholder:after {
color: #b3b3b1; }

1
bl-plugins/quill/css/themes/default.min.css vendored Executable file
View File

@ -0,0 +1 @@
.medium-toolbar-arrow-under:after{border-color:#242424 transparent transparent;top:50px}.medium-toolbar-arrow-over:before{border-color:transparent transparent #242424;top:-8px}.medium-editor-toolbar{background-color:#242424;background:-webkit-linear-gradient(top,#242424,rgba(36,36,36,.75));background:linear-gradient(to bottom,#242424,rgba(36,36,36,.75));border:1px solid #000;border-radius:5px;box-shadow:0 0 3px #000}.medium-editor-toolbar li button{background-color:#242424;background:-webkit-linear-gradient(top,#242424,rgba(36,36,36,.89));background:linear-gradient(to bottom,#242424,rgba(36,36,36,.89));border:0;border-right:1px solid #000;border-left:1px solid #333;border-left:1px solid rgba(255,255,255,.1);box-shadow:0 2px 2px rgba(0,0,0,.3);color:#fff;height:50px;min-width:50px;-webkit-transition:background-color .2s ease-in;transition:background-color .2s ease-in}.medium-editor-toolbar li button:hover{background-color:#000;color:#ff0}.medium-editor-toolbar li .medium-editor-button-first{border-bottom-left-radius:5px;border-top-left-radius:5px}.medium-editor-toolbar li .medium-editor-button-last{border-bottom-right-radius:5px;border-top-right-radius:5px}.medium-editor-toolbar li .medium-editor-button-active{background-color:#000;background:-webkit-linear-gradient(top,#242424,rgba(0,0,0,.89));background:linear-gradient(to bottom,#242424,rgba(0,0,0,.89));color:#fff}.medium-editor-toolbar-form{background:#242424;border-radius:5px;color:#999}.medium-editor-toolbar-form .medium-editor-toolbar-input{background:#242424;box-sizing:border-box;color:#ccc;height:50px}.medium-editor-toolbar-form a{color:#fff}.medium-editor-toolbar-anchor-preview{background:#242424;border-radius:5px;color:#fff}.medium-editor-placeholder:after{color:#b3b3b1}

4
bl-plugins/quill/js/medium-editor.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
{
"plugin-data":
{
"name": "Quilljs",
"description": ""
}
}

View File

@ -0,0 +1,10 @@
{
"author": "Quilljs",
"email": "",
"website": "https://quilljs.com/",
"version": "1.3.6",
"releaseDate": "2018-03-12",
"license": "",
"compatible": "3.2",
"notes": ""
}

109
bl-plugins/quill/plugin.php Normal file
View File

@ -0,0 +1,109 @@
<?php
class pluginQuilljs extends Plugin {
private $loadOnController = array(
'new-content',
'edit-content'
);
public function init()
{
$this->dbFields = array(
'toolbar1'=>'formatselect bold italic bullist numlist | blockquote alignleft aligncenter alignright | link unlink pagebreak image removeformat code',
'toolbar2'=>'',
'plugins'=>'code autolink image link pagebreak advlist lists textcolor colorpicker textpattern'
);
}
public function form()
{
global $L;
$html = '<div>';
$html .= '<label>'.$L->get('Toolbar top').'</label>';
$html .= '<input name="toolbar1" id="jstoolbar1" type="text" value="'.$this->getValue('toolbar1').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$L->get('Toolbar bottom').'</label>';
$html .= '<input name="toolbar2" id="jstoolbar2" type="text" value="'.$this->getValue('toolbar2').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$L->get('Plugins').'</label>';
$html .= '<input name="plugins" id="jsplugins" type="text" value="'.$this->getValue('plugins').'">';
$html .= '</div>';
return $html;
}
public function adminHead()
{
if (!in_array($GLOBALS['ADMIN_CONTROLLER'], $this->loadOnController)) {
return false;
}
$html = '<link rel="stylesheet" href="'.$this->htmlPath().'css/medium-editor.min.css">';
$html .= '<link rel="stylesheet" href="'.$this->htmlPath().'css/themes/default.css">';
return $html;
}
public function adminBodyEnd()
{
if (!in_array($GLOBALS['ADMIN_CONTROLLER'], $this->loadOnController)) {
return false;
}
$mediumJavascript = $this->htmlPath().'js/medium-editor.min.js';
$script = <<<EOF
<script src="$mediumJavascript"></script>
<script>
// Function required for Media Manager
// Insert an image on the editor in the cursor position
function editorInsertMedia(filename) {
tinymce.activeEditor.insertContent("<img src=\""+filename+"\" alt=\"\">");
}
// Function required for Autosave function
// Returns the content of the editor
function editorGetContent() {
return tinymce.get('jseditor').getContent();
}
function resizeEditor() {
var editor = tinymce.activeEditor;
editor.theme.resizeTo("100%", "500px");
}
var editor = new MediumEditor('#jseditor', {
toolbar: {
/* These are the default options for the toolbar,
if nothing is passed this is what is used */
allowMultiParagraphSelection: true,
buttons: ['bold', 'italic', 'underline', 'anchor', 'h2', 'h3', 'image'],
diffLeft: 0,
diffTop: -10,
firstButtonClass: 'medium-editor-button-first',
lastButtonClass: 'medium-editor-button-last',
relativeContainer: null,
standardizeSelectionStart: false,
static: false,
/* options which only apply when static is true */
align: 'center',
sticky: false,
updateOnEmptySelection: false
}
});
</script>
EOF;
return $script;
}
}

Binary file not shown.

View File

@ -0,0 +1,734 @@
# 1.3.6
- Make picker accessible [#1999](https://github.com/quilljs/quill/pull/1999)
- Fix Japanese composition in Chrome 65 [#2009](https://github.com/quilljs/quill/issues/2009)
Thanks to [@berylw](https://github.com/berylw) and [@erinsinger93](https://github.com/erinsinger93) for contributions to this release!
# 1.3.5
- Fix indent preservation of a checked checklist item [#1818](https://github.com/quilljs/quill/issues/1818)
- * added as a shortcut to trigger bullet list formatting [#1819](https://github.com/quilljs/quill/pull/1819)
- Fix pasting text-align styles [#1873](https://github.com/quilljs/quill/issues/1873)
- Fix cursor position after dangerouslyPasteHTML [#1886](https://github.com/quilljs/quill/issues/1886)
- Fix value of history stack in text-change handler [#1906](https://github.com/quilljs/quill/pull/1906)
- Workaround for Webkit locking up when navigating around images using hotkeys [#1910](https://github.com/quilljs/quill/issues/1910)
Thank you [@araruna](https://github.com/araruna), [@bryanrsmith](https://github.com/bryanrsmith), [@haugstrup](https://github.com/haugstrup), [@icylace](https://github.com/icylace), [@leimig](https://github.com/leimig), [@LFDM](https://github.com/LFDM), [@nikparo](https://github.com/nikparo), [@rafpaf](https://github.com/rafpaf) and [@vk2sky](https://github.com/vk2sky) for your contributions to this release.
# 1.3.4
- Loosen dependency specification [#1748](https://github.com/quilljs/quill/issues/1748)
- Loosen list autofill constraint [#1749](https://github.com/quilljs/quill/issues/1749)
Thanks to [@danfuzz](https://github.com/danfuzz) and [@SoftVision-CarmenFat](https://github.com/SoftVision-CarmenFat) for contributions to this release!
# 1.3.3
- Fix `getFormat` with no parameters while editor is not focused [#1548](https://github.com/quilljs/quill/issues/1548)
- Remove automatic highlighting across embeds [#1691](https://github.com/quilljs/quill/issues/1691)
- Support checking checklist on mobile [#1693](https://github.com/quilljs/quill/pull/1711)
- Fix list creation keyboard shortcuts [#1723](https://github.com/quilljs/quill/issues/1723)
- Show KaTex rendering errors [#1738](https://github.com/quilljs/quill/pull/1738)
Thank you [@altschuler](https://github.com/altschuler), [@arrocke](https://github.com/arrocke), [@guillaumepotier](https://github.com/guillaumepotier), [@sferoze](https://github.com/sferoze) and [@volser](https://github.com/volser) for your contributions to this release.
# 1.3.2
- Pasting into code block should always paste as code [#1624](https://github.com/quilljs/quill/issues/1624)
- Fix removing embed selection when arrow keys change selection [#1633](https://github.com/quilljs/quill/issues/1633)
- Fix selection restoration after image insertion [#1649](https://github.com/quilljs/quill/issues/1649)
- Fix selection-change firing after dragging off screen [#1654](https://github.com/quilljs/quill/issues/1654)
- Fix placeholder text spacing [#1677](https://github.com/quilljs/quill/issues/1677)
Thanks to [@abramz](https://github.com/abramz), [@amitm02](https://github.com/amitm02), [@eamodio](https://github.com/eamodio), [@HWliao](https://github.com/HWliao), [@mmitis](https://github.com/mmitis), [@nelsonpecora](https://github.com/nelsonpecora), [@nipunjain87](https://github.com/nipunjain87), and [@ValueBerry](https://github.com/ValueBerry) for contributions to this release!
# 1.3.1
- Fix placeholder when emptying text [#1594](https://github.com/quilljs/quill/issues/1594)
- Fix inserting newline after header [#1616](https://github.com/quilljs/quill/issues/1616)
Thank you [@Natim](https://github.com/Natim) and [@stephenLYao](https://github.com/stephenLYao) for your contributions to this release.
# 1.3.0
Add `matchVisual` [configuration](https://quilljs.com/docs/modules/clipboard/#configuration) to Clipboard.
- Use DOM API to determine selected `<select>` option [#1576](https://github.com/quilljs/quill/pull/1576)
- Add `:focus` styles to toolbar [#1540](https://github.com/quilljs/quill/issues/1540)
- Allow users to undo automatic keyboard completions [#1538](https://github.com/quilljs/quill/issues/1538)
- Use github-pages gem to make development environment consistent [#1536](https://github.com/quilljs/quill/issues/1536) [#1544](https://github.com/quilljs/quill/pull/1544)
- Fix composing Chinese with preformatting [#1514](https://github.com/quilljs/quill/issues/1514)
- Fix example clipboard module in docs [#1502](https://github.com/quilljs/quill/issues/1502)
- Fix list layout in RTL mode [#1498](https://github.com/quilljs/quill/issues/1498)
- Clarify documentation for scrollingContainer [#1496](https://github.com/quilljs/quill/issues/1496)
- Add `tel` to default link whitelist [#1436](https://github.com/quilljs/quill/pull/1436)
- Fix cursor interaction with custom contenteditable=false embeds [#1172](https://github.com/quilljs/quill/issues/1172) [#1181](https://github.com/quilljs/quill/issues/1181)
- Fix rendered cursor in Chrome when interacting with scrollbar [#1114](https://github.com/quilljs/quill/issues/1114)
Thanks to [@alexkrolick](https://github.com/alexkrolick), [@amitm02](https://github.com/amitm02), [@Christilut](https://github.com/Christilut), [@danielschwartz](https://github.com/danielschwartz), [@emanuelbsilva](https://github.com/emanuelbsilva), [@ersommer](https://github.com/ersommer), [@fiurrr](https://github.com/fiurrr), [@jackmu95](https://github.com/jackmu95), [@jmzhang](https://github.com/jmzhang), [@mdpye](https://github.com/mdpye), [@ralrom](https://github.com/ralrom), [@sferoze](https://github.com/sferoze), [@simon-at-fugu](https://github.com/simon-at-fugu), and [@yogadzx](https://github.com/yogadzx) for contributions to this release!
# 1.2.6
- Disable Grammarly by default [#574](https://github.com/quilljs/quill/issues/574)
- Fix RTL list spacing [#1485](https://github.com/quilljs/quill/pull/1485)
- Add support for mobile Youtube links [#1489](https://github.com/quilljs/quill/pull/1489)
Thank you [@amitm02](https://github.com/amitm02), [@benbro](https://github.com/benbro)
[@nickbaum](https://github.com/nickbaum), [@stalniy](https://github.com/stalniy) and [@ygrishajev](https://github.com/ygrishajev) for your contributions to this release.
# 1.2.5
- Fix cursor shifting to be exclusive of user cursor [#1367](https://github.com/quilljs/quill/issues/1367)
- Fix iOS hover state on toolbar [#1388](https://github.com/quilljs/quill/issues/1388)
- Fix `getText()` for Bangla [#1427](https://github.com/quilljs/quill/issues/1427)
- Fix Korean character composition in Safari [#1437](https://github.com/quilljs/quill/issues/1437)
- Fix pasting HTML handling special class names [#1445](https://github.com/quilljs/quill/issues/1445)
- Fix paste or initializing with font-weight [#1456](https://github.com/quilljs/quill/issues/1456)
- Fix updating active picker logic [#1468](https://github.com/quilljs/quill/issues/1468)
Thanks to [@aliciawood](https://github.com/aliciawood), [@benbro](https://github.com/benbro), [@denis-aes](https://github.com/denis-aes), [@despreju](https://github.com/despreju), [@GlenKPeterson](https://github.com/GlenKPeterson), [@haugstrup](https://github.com/haugstrup), [@jziggas](https://github.com/jziggas), [@RobAley](https://github.com/RobAley), [@sheley1998](https://github.com/sheley1998), [@silverprize](https://github.com/silverprize), and [@yairy](https://github.com/yairy) for contributions to this release!
# 1.2.4
- Fix pasting nested list [#906](https://github.com/quilljs/quill/issues/906)
- Fix delete key interaction at end of list [#1277](https://github.com/quilljs/quill/issues/1277)
- Fix pasting whitespace prefix [#1244](https://github.com/quilljs/quill/issues/1244)
- Fix file dialog open speed [#1265](https://github.com/quilljs/quill/issues/1265)
- Fix backspace with at beginning of list interaction with meta keys [#1307](https://github.com/quilljs/quill/issues/1307)
- Fix pasting nested styles [#1333](https://github.com/quilljs/quill/issues/1333)
- Fix backspacing into an empty line should keep own formats [#1339](https://github.com/quilljs/quill/issues/1339)
- Fix IE11 autolinking interaction [#1390](https://github.com/quilljs/quill/issues/1390)
- Fix persistent focus interaction with tabbing away [#1404](https://github.com/quilljs/quill/issues/1404)
Thanks to [@bigggge](https://github.com/bigggge), [@CoenWarmer](https://github.com/CoenWarmer), [@cutteroid](https://github.com/cutteroid), [@jay-cox](https://github.com/jay-cox), [@kiewic](https://github.com/kiewic), [@kloots](https://github.com/kloots), [@MichaelTontchev](https://github.com/MichaelTontchev), [@montlebalm](https://github.com/montlebalm), [@RichardNeill](https://github.com/RichardNeill), and [@vasconita](https://github.com/vasconita) for your contributions to this release.
# 1.2.3
- Fix scrolling when appending new lines [#1276](https://github.com/quilljs/quill/issues/1276) [#1361](https://github.com/quilljs/quill/issues/1361)
- Fix binding to explicit shortcut key [#1365](https://github.com/quilljs/quill/issues/1365)
- Merge clone update [#1359](https://github.com/quilljs/quill/pull/1359)
Thank you [@artaommahe](https://github.com/artaommahe), [@c-w](https://github.com/c-w), [@EladBet](https://github.com/EladBet), [@emenoh](https://github.com/emenoh), and [@montlebalm](https://github.com/montlebalm) for contributions to this release!
# 1.2.2
- Fix backspace/delete on Windows/Ubuntu [#1334](https://github.com/quilljs/quill/issues/1334)
Thanks to [@dinusuresh](https://github.com/dinusuresh) for your contributions to this release.
# 1.2.1
- Fix link removal on Snow theme [#1259](https://github.com/quilljs/quill/issues/1259)
- Fix CMD+backspace on empty editor [#1319](https://github.com/quilljs/quill/issues/1319)
- Fix disabled checklist behavior [#1312](https://github.com/quilljs/quill/issues/1312)
Thank you [@danielschwartz](https://github.com/@danielschwartz), [@JedWatson](https://github.com/@JedWatson), [@montlebalm](https://github.com/@montlebalm), and [@simi](https://github.com/@simi) for contributions to this release!
# 1.2.0
Add concept of experimental APIs: they are APIs meant to try out support for use cases we would like to address, but gives flexibility to find the right API interface. As such they are not covered by Semantic Versioning. Several are added to start things off: `find`, `getIndex`, `getLeaf`, `getLine`, `getLines`.
- Merge disabling list keyboard shortcut when list format is disabled [#1257](https://github.com/quilljs/quill/pull/1257)
Thanks to [@haugstrup](https://github.com/haugstrup) for your contributions to this release.
# 1.1.10
- Preserve user selection on API changes [#1152](https://github.com/quilljs/quill/issues/1152)
- Fix backspacing into emojis [#1230](https://github.com/quilljs/quill/issues/1230)
- Fix ability to type after emptying line in IE/Firefox [#1254](https://github.com/quilljs/quill/issues/1254)
- Fix whitelisting block formats [#1256](https://github.com/quilljs/quill/issues/1256)
Thank you [@benbro](https://github.com/benbro), [@haugstrup](https://github.com/haugstrup), [@peterweck](https://github.com/peterweck) and [@sbevels](https://github.com/sbevels) for contributions to this release!
# 1.1.9
- Flip tooltips when vertically out of bounds [#851](https://github.com/quilljs/quill/issues/851)
- Fix IE11 autolinking and control backspace [#1028](https://github.com/quilljs/quill/issues/1028)
- Only show tooltip when user initiates selection change [#1193](https://github.com/quilljs/quill/issues/1193)
- Fix bug needing to click twice on align [#1220](https://github.com/quilljs/quill/issues/1220)
- Fix cut + pasting videos [#1222](https://github.com/quilljs/quill/issues/1222)
Thanks to [@amitguptagwl](https://github.com/amitguptagwl), [@antonlabunets](https://github.com/antonlabunets), [@benbro](https://github.com/benbro), [@eamodio](https://github.com/eamodio) and [@ygrishajev](https://github.com/ygrishajev) for your contributions to this release.
# 1.1.8
- Support pasting italics from Google Docs [#1185](https://github.com/quilljs/quill/issues/1185)
- Fix setting dropdown picker back to default [#1191](https://github.com/quilljs/quill/issues/1191)
- Fix code-block formatting on empty first line in Firefox [#1195](https://github.com/quilljs/quill/issues/1195)
- Prevent formatting via keyboard shortcuts when not whitelisted [#1197](https://github.com/quilljs/quill/issues/1197)
- Fix select-all copy and overwrite paste in Firefox [#1202](https://github.com/quilljs/quill/issues/1202)
Thank you [@adfaure](https://github.com/adfaure), [@berndschimmer](https://github.com/berndschimmer), [@CoenWarmer](https://github.com/CoenWarmer), [@montlebalm](https://github.com/montlebalm), and [@TraceyYau](https://github.com/TraceyYau) for contributions to this release!
# 1.1.7
- Fix dropdown values reverting to default [#901](https://github.com/quilljs/quill/issues/901)
- Add config to prevent scroll jumping on paste [#1082](https://github.com/quilljs/quill/issues/1082)
- Prevent scrolling on API source calls [#1152](https://github.com/quilljs/quill/issues/1152)
- Fix tsconfig build error [#1165](https://github.com/quilljs/quill/issues/1165)
- Fix delete and formatting interaction in Firefox [#1171](https://github.com/quilljs/quill/issues/1171)
- Fix cursor jump on formatting in middle of text [#1176](https://github.com/quilljs/quill/issues/1176)
Thanks to [@cutteroid](https://github.com/cutteroid), [@houxg](https://github.com/houxg), [@jasongisstl](https://github.com/jasongisstl), [@nikparo](https://github.com/nikparo), [@sbevels](https://github.com/sbevels), and [sferoze](https://github.com/sferoze) for your contributions to this release.
# 1.1.6
### Features
Checklists [#759](https://github.com/quilljs/quill/issues/759) support has been added to the API. UI and relevant interactions are still forthcoming.
### Bug Fixes
- Fix bug that allowed edits in readOnly mode [#1151](https://github.com/quilljs/quill/issues/1151)
- Fix max call stack bug on large paste [#1123](https://github.com/quilljs/quill/issues/1123)
Thank you [@jgmediadesign](https://github.com/jgmediadesign) and [@julienbmobile](https://github.com/julienbmobile) for contributions to this release!
# 1.1.5
- Remove unnecessary type attribute in documentation [#1087](https://github.com/quilljs/quill/pull/1087)
- Fix chrome 52+ input file label open slow [#1090](https://github.com/quilljs/quill/pull/1090)
- Only query the last op's insertion string if it's actually an insert [#1095](https://github.com/quilljs/quill/pull/1095)
Thank you [@jleen](https://github.com/jleen), [@kaelig](https://github.com/kaelig), and [@YouHan26](https://github.com/YouHan26) for your contributions to this release.
# 1.1.3
- Update quill-delta [delta#2](https://github.com/quilljs/delta/issues/2)
- Fix link creation [#1073](https://github.com/quilljs/quill/issues/1073)
Thanks to [@eamodio](https://github.com/eamodio) and [@metsavir](https://github.com/metsavir) for contributions to this release!
# 1.1.2
- Fix setContents on already formatted text [#1065](https://github.com/quilljs/quill/issues/1065)
- Fix regression [#1067](https://github.com/quilljs/quill/issues/1067)
- Improve documentation [#1069](https://github.com/quilljs/quill/pull/1069) [#1070](https://github.com/quilljs/quill/pull/1070)
Thank you [@benbro](https://github.com/benbro), [@derickruiz](https://github.com/derickruiz), [@eamodio](https://github.com/eamodio), [@hallaathrad](https://github.com/hallaathrad), and [@philly385](https://github.com/philly385) for your contributions to this release.
# 1.1.1
### Bug fixes
- TEXT_CHANGE event now use cursor position to inform change location [#746](https://github.com/quilljs/quill/issues/746)
- Fix inconsistent cursor reporting between browsers [#1007](https://github.com/quilljs/quill/issues/1007)
- Fix tooltip overflow in docs [#1060](https://github.com/quilljs/quill/issues/1060)
- Fix naming [#1063](https://github.com/quilljs/quill/pull/1063)
- Fix Medium example [#1064](https://github.com/quilljs/quill/issues/1064)
Thanks to [@artaommahe](https://github.com/artaommahe), [@benbro](https://github.com/benbro), [@fuffalist](https://github.com/fuffalist), [@sachinrekhi](https://github.com/sachinrekhi), [@sergop321](https://github.com/sergop321), and [@tlg](https://github.com/tlg) for contributions to this release!
Special thanks to [@DadaMonad](https://github.com/DadaMonad) for contributions on [fast-diff](https://github.com/jhchen/fast-diff) that enabled the [#746](https://github.com/quilljs/quill/issues/746) fix.
# 1.1.0
### Additions
Quill has always allowed API calls, even when the editor is in readOnly mode. All API calls also took a `source` parameter to indicate the origin of the change. For example, a click handler in the toolbar would call `formatText` with `source` set to `"user"`. When the editor is in readOnly mode, it would make sense for user initiated actions to be ignored. For example the user cannot focus or type into the editor. However because API calls are allowed, the user could still modify the editor contents [#909](https://github.com/quilljs/quill/issues/909). The natural fix is to ignore user initiated actions, even if it came through an API call, when the editor is in readOnly mode.
However, the documentation never stated API calls with `source` set to `"user"` would be ignored sometimes, so this would be a breaking change under semver. Some could argue this is a bug fix and would only warrant a patch version bump, but this seems disingenuous for this particular case. The fact that almost no one took advantage of the `source` beyond default values is irrelevant under the eyes of semver.
So a `strict` configuration option has been added. It is true by default so the above behavior is unchanged, and [#909](https://github.com/quilljs/quill/issues/909) is unfixed. Changing this to `false`, will use new behavior of ignoring user initiated changes on a disabled editor, even if through an API call.
### Fixes
- Fix undo when preformatted text inserted before plain text [#1019](https://github.com/quilljs/quill/issues/1019)
- Add focus indicator on toolbar buttons [#1020](https://github.com/quilljs/quill/issues/1020)
- Do not steal focus on API calls [#1029](https://github.com/quilljs/quill/issues/1029)
- Disable paste when Quill is disabled [#1038](https://github.com/quilljs/quill/issues/1038)
- Fix blank detection [#1043](https://github.com/quilljs/quill/issues/1043)
- Enable yarn [#1041](https://github.com/quilljs/quill/issues/1041)
- Documentation fixes [#1026](https://github.com/quilljs/quill/pull/1026), [#1027](https://github.com/quilljs/quill/pull/1027), [#1032](https://github.com/quilljs/quill/pull/1032)
Thank you [@benbro](https://github.com/benbro), [@cutteroid](https://github.com/cutteroid), [@evansolomon](https://github.com/evansolomon), [@felipeochoa](https://github.com/felipeochoa), [jackmu95](https://github.com/jackmu95), [@joedynamite](https://github.com/joedynamite), [@lance13c](https://github.com/lance13c), [@leebenson](https://github.com/leebenson), [@maartenvanvliet](https://github.com/maartenvanvliet), [@sarbbottam](https://github.com/sarbbottam), [@viljark](https://github.com/viljark), [@w00fz](https://github.com/w00fz) for their contributions to this release.
# 1.0.6
Documentation clarifications and bug fixes.
- Fix attaching toolbar to `<select>` without themes [#997](https://github.com/quilljs/quill/issues/997)
- Link `code` icon to `code-block` [#998](https://github.com/quilljs/quill/issues/998)
- Fix undo stack when at size limit [#1001](https://github.com/quilljs/quill/pull/1001)
- Fix bug where `formatLine` did not ignore inline formats [8a7190](https://github.com/quilljs/parchment/commit/8a71905b2dd02d003edb02a15fdc727b26914e49)
Thanks to [@dropfen](https://github.com/dropfen), [@evansolomon](https://github.com/evansolomon), [@hallaathrad](https://github.com/hallaathrad), [@janyksteenbeek](https://github.com/janyksteenbeek), [@jackmu95](https://github.com/jackmu95), [@marktron](https://github.com/marktron), [@mcat-ee](https://github.com/mcat-ee), [@unhammer](https://github.com/unhammer), and [@zeke](https://github.com/zeke) for contributions to this release!
# 1.0.5
Became 1.0.6 with a build/deploy fix.
# 1.0.4
- Fix bubble theme defaults [#963](https://github.com/quilljs/quill/issues/963)
- Fix browsers modifying inline nesting order [#971](https://github.com/quilljs/quill/issues/971)
- Do not fire selection-change event on paste [#974](https://github.com/quilljs/quill/issues/974)
- Support alt attribute in images [#975](https://github.com/quilljs/quill/issues/975)
- Deprecate `pasteHTML` for removal in Quill 2.0 [#981](https://github.com/quilljs/quill/issues/981)
Thank you [jackmu95](https://github.com/jackmu95), [kristeehan](https://github.com/kristeehan), [ruffle1986](https://github.com/ruffle1986), [sergop321](https://github.com/sergop321), [sferoze](https://github.com/sferoze), and [sijad](https://github.com/sijad) for contributions to this release.
# 1.0.3
- Fix [#928](https://github.com/quilljs/quill/issues/928)
Thank you [@scottmessinger](https://github.com/scottmessinger) for the bug report.
# 1.0.2
- Fix building quill.core.js [docs #11](https://github.com/quilljs/quilljs.github.io/issues/11)
- Fix regression of [#793](https://github.com/quilljs/quill/issues/793)
Thanks to [@eamodio](https://github.com/eamodio) and [@neandrake](https://github.com/neandrake) for their contributions to this release.
# 1.0.0
Quill 1.0 is released! Read the [official announcement](https://quilljs.com/blog/announcing-quill-1-0/).
# 1.0.0-rc.4
Fix one important bug [fdd920](https://github.com/quilljs/quill/commit/fdd920250c05403ed9e5d6d86826a00167ba0b09)
# 1.0.0-rc.3
A few bug fixes, one with with possibly significant implications. See the [issue #889](https://github.com/quilljs/quill/issues/889) and [commit fix](https://github.com/quilljs/quill/commit/be24c62a6234818548658fcb5e1935a0c07b4eb7) for more details.
### Bug Fixes
- Fix indenting beyond first level with toolbar [#882](https://github.com/quilljs/quill/issues/882)
- Fix toolbar font/size display on Safari [#884](https://github.com/quilljs/quill/issues/884)
- Fix pasting from Gmail from on different browser [#886](https://github.com/quilljs/quill/issues/886)
- Fix undo/redo consistency [#889](https://github.com/quilljs/quill/issues/889)
- Fix null error when selecting all on Firefox [#891](https://github.com/quilljs/quill/issues/891)
- Fix merging keyboard options twice [#897](https://github.com/quilljs/quill/issues/897)
Thank you [@benbro](https://github.com/benbro), [@cgilboy](https://github.com/cgilboy), [@cutteroid](https://github.com/cutteroid), and [@routman](https://github.com/routman) for contributions to this release!
# 1.0.0-rc.2
A few bug fixes, including one significant [one](https://github.com/quilljs/quill/issues/883)
### Bug Fixes
- Fix icon picker rendering in MS Edge [#877](https://github.com/quilljs/quill/issues/877)
- Add back minified build to release [#881](https://github.com/quilljs/quill/issues/881)
- Fix optimized change calculation with preformatted text [#883](https://github.com/quilljs/quill/issues/883)
Thanks to [benbro](https://github.com/benbro), [cutteroid](https://github.com/cutteroid), and [CapTec](https://github.com/CapTec) for their contributions to this release.
# 1.0.0-rc.1
A few bug fixes and performance improvements.
### Features
- Source maps now available from CDN for minified build
### Bug Fixes
- Fix scroll interaction between two Quill editors [#855](https://github.com/quilljs/quill/issues/855)
- Fix scroll on paste [#856](https://github.com/quilljs/quill/issues/856)
- Fix native iOS tooltip formatting [#862](https://github.com/quilljs/quill/issues/862)
- Remove comments from pasting from Word [#872](https://github.com/quilljs/quill/issues/872)
- Fix indent at all supported indent levels [#873](https://github.com/quilljs/quill/issues/873)
- Fix indent interaction with text direction [#874](https://github.com/quilljs/quill/issues/874)
Thank you [@benbro](https://github.com/benbro), [@fernandogmar](https://github.com/fernandogmar), [@sachinrekhi](https://github.com/sachinrekhi), [@sferoze](https://github.com/sferoze), and [@stalniy](https://github.com/stalniy) for contributions to this release!
# 1.0.0-rc.0
Take a look at [Quill 1.0 Release Candidate](https://quilljs.com/blog/quill-1-0-release-candidate-released/) for more details.
### Updates
- Going forward the minimal stylesheet build will be named quill.core.css, instead of quill.css
### Bug Fixes
- Fix identifying ordered and bulletd lists [#846](https://github.com/quilljs/quill/issues/846) [#847](https://github.com/quilljs/quill/issues/847)
- Fix bullet interaction with text direction [#848](https://github.com/quilljs/quill/issues/848)
A huge thank you to all contributors to through the beta! Special thanks goes to [@benbro](https://github.com/benbro) and [@sachinrekhi](https://github.com/sachinrekhi) who together submitted submitted almost 50 Issues and Pull Requests!
- [@abejdaniels](https://github.com/abejdaniels)
- [@anovi](https://github.com/anovi)
- [@benbro](https://github.com/benbro)
- [@bram2w](https://github.com/bram2w)
- [@brynjagr](https://github.com/brynjagr)
- [@CapTec](https://github.com/CapTec)
- [@Cinamonas](https://github.com/Cinamonas)
- [@clemmy](https://github.com/clemmy)
- [@crisbeto](https://github.com/crisbeto)
- [@cutteroid](https://github.com/cutteroid)
- [@DadaMonad](https://github.com/DadaMonad)
- [@davelozier](https://github.com/davelozier)
- [@emanuelbsilva](https://github.com/emanuelbsilva)
- [@ersommer](https://github.com/ersommer)
- [@fernandogmar](https://github.com/fernandogmar)
- [@george-norris-salesforce](https://github.com/george-norris-salesforce)
- [@jackmu95](https://github.com/jackmu95)
- [@jasonmng](https://github.com/jasonmng)
- [@jbrowning](https://github.com/jbrowning)
- [@jonnolen](https://github.com/jonnolen)
- [@KameSama](https://github.com/KameSama)
- [@kei-ito](https://github.com/kei-ito)
- [@kylebragger](https://github.com/kylebragger)
- [@LucVanPelt](https://github.com/LucVanPelt)
- [@lukechapman](https://github.com/lukechapman)
- [@micimize](https://github.com/micimize)
- [@mmorearty](https://github.com/mmorearty)
- [@mshamaiev-intel471](https://github.com/mshamaiev-intel471)
- [@quentez](https://github.com/quentez)
- [@sachinrekhi](https://github.com/sachinrekhi)
- [@sagacitysite](https://github.com/sagacitysite)
- [@saw](https://github.com/saw)
- [@stalniy](https://github.com/stalniy)
- [@tOgg1](https://github.com/tOgg1)
- [@u9520107](https://github.com/u9520107)
- [@WriterStat](https://github.com/WriterStat)
# 1.0.0-beta.11
Fixed some regressive bugs from previous release.
### Bug Fixes
- Fix activating more than one format before typing [#841](https://github.com/quilljs/quill/issues/841)
- Run default matchers before before user defined ones [#843](https://github.com/quilljs/quill/issues/843)
- Fix merging theme configurations [#844](https://github.com/quilljs/quill/issues/844), [#845](845)
Thanks [benbro](https://github.com/benbro), [jackmu95](https://github.com/jackmu95), and [george-norris-salesforce](https://github.com/george-norris-salesforce) for the bug reports.
# 1.0.0-beta.10
Lots of bug fixes and performance improvements.
### Breaking Changes
- Keyboard handler format in initial [configuration](beta.quilljs.com/docs/modules/keyboard/) has changed. `addBinding` is overloaded to be backwards compatible.
### Bug Fixes
- Preserve last bullet on paste [#696](https://github.com/quilljs/quill/issues/696)
- Fix getBounds calculation for lists [#765](https://github.com/quilljs/quill/issues/765)
- Escape quotes in font value [#769](https://github.com/quilljs/quill/issues/769)
- Fix spacing calculation on paste [#797](https://github.com/quilljs/quill/issues/797)
- Fix Snow tooltip label [#798](https://github.com/quilljs/quill/issues/798)
- Fix link tooltip showing up on long click [#799](https://github.com/quilljs/quill/issues/799)
- Fix entering code block in IE and Firefox [#803](https://github.com/quilljs/quill/issues/803)
- Fix opening image dialog on Firefox [#805](https://github.com/quilljs/quill/issues/805)
- Fix focus loss on updateContents [#809](https://github.com/quilljs/quill/issues/809)
- Reset toolbar of blur [#810](https://github.com/quilljs/quill/issues/810)
- Fix cursor position calculation on delete [#811](https://github.com/quilljs/quill/issues/811)
- Fix highlighting across different alignment values [#815](https://github.com/quilljs/quill/issues/815)
- Allow default active button [#816](https://github.com/quilljs/quill/issues/816)
- Fix deleting last character of formatted text on Firefox [#824](https://github.com/quilljs/quill/issues/824)
- Fix Youtube regex [#826](https://github.com/quilljs/quill/pull/826)
- Fix missing imports when Quill not global [#836](https://github.com/quilljs/quill/pull/836)
Thanks to [benbro](https://github.com/benbro), [clemmy](https://github.com/clemmy), [crisbeto](https://github.com/crisbeto), [cutteroid](https://github.com/cutteroid), [jackmu95](https://github.com/jackmu95), [kylebragger](https://github.com/kylebragger), [sachinrekhi](https://github.com/sachinrekhi), [stalniy](https://github.com/stalniy), and [tOgg1](https://github.com/tOgg1) for their contributions to this release.
# 1.0.0-beta.9
Potentially the final beta before a release candidate, if no major issues are discovered.
### Breaking Changes
- No longer expose `ui/link-tooltip` through `import` as implementation is now Snow specific
- Significant refactoring of `ui/tooltip`
- Syntax module now autodetects language, instead of defaulting to Javascript
### Features
- Formula and video insertion UI added to Snow and Bubble themes
### Bug Fixes
- Fix toolbar active state after backspacing to previous line [#730](https://github.com/quilljs/quill/issues/730)
- User selection is now preserved various API calls [#731](https://github.com/quilljs/quill/issues/731)
- Fix long click on link-tooltip [#747](https://github.com/quilljs/quill/issues/747)
- Fix ordered list and text-align right interaction [#784](https://github.com/quilljs/quill/issues/784)
- Fix toggling code block off [#789](https://github.com/quilljs/quill/issues/789)
- Scroll position is now automatically preserved between editor blur and focus
Thank you [@benbro](https://github.com/benbro), [@KameSama](https://github.com/KameSama), and [@sachinrekhi](https://github.com/sachinrekhi) for contributions to this release!
# 1.0.0-beta.8
Weekly beta preview release. The editor is almost ready for release candidacy but a couple cycles will be spent on the Snow and Bubble interfaces.
### Work in Progress
Image insertion is being reworked in the provided Snow and Bubble themes. The old image-tooltip has been removed in favor of a simpler and native interaction. By default clicking the image icon on the toolbar will open the OS file picker to convert and that into a base64 image. This will allow for a more natural hook to upload to a remote server instead. Some changes to the link tooltip is also being made to accommodate formula and video insertion, currently only available through the API.
### Breaking Changes
- Image tooltip UI has been removed, see above
- Code blocks now use a single `<pre>` tag, instead of one per line [#723](https://github.com/quilljs/quill/issues/723)
### Bug Fixes
- Fix multiline syntax highlighting [#723](https://github.com/quilljs/quill/issues/723)
- Keep pickers open on api text-change [#734](https://github.com/quilljs/quill/issues/734)
- Emit correct source for text-change [#760](https://github.com/quilljs/quill/issues/760)
- Emit correct parameters in selection-change [#762](https://github.com/quilljs/quill/issues/762)
- Fix error redoing line insertion [#767](https://github.com/quilljs/quill/issues/767)
- Better emitted Deltas for text-change [#768](https://github.com/quilljs/quill/issues/768)
- Better Array.prototype.find polyfill for IE11 [#776](https://github.com/quilljs/quill/issues/776)
- Fix Parchment errors in replacing text [#779](https://github.com/quilljs/quill/issues/779) [#783](https://github.com/quilljs/quill/issues/783)
- Fix align button active state [#780](https://github.com/quilljs/quill/issues/780)
- Fix format text on falsy value [#782](https://github.com/quilljs/quill/issues/782)
- Use native cut [#785](https://github.com/quilljs/quill/issues/785)
- Fix initializing document where last line is formatted [#786](https://github.com/quilljs/quill/issues/786)
Thanks to [benbro](https://github.com/benbro), [bram2w](https://github.com/bram2w), [clemmy](https://github.com/clemmy), [DadaMonad](https://github.com/DadaMonad), [ersommer](https://github.com/ersommer), [michaeljosephrosenthal](https://github.com/michaeljosephrosenthal), [mmorearty](https://github.com/mmorearty), [mshamaiev-intel471](https://github.com/mshamaiev-intel471), and [sachinrekhi](https://github.com/sachinrekhi) for their contributions to this release.
# 1.0.0-beta.7
Became 1.0.0-beta.8 with a fix.
# 1.0.0-beta.6
Weekly beta preview release.
### Features
- Pickers can now be used and is styled in Bubble theme
### Bug Fixes
- Fix editing within formula [#702](https://github.com/quilljs/quill/issues/702)
- Fix adding new line when deleting across lists [#741](https://github.com/quilljs/quill/issues/741)
- Fix placeholder when default block tag is changed [#743](https://github.com/quilljs/quill/issues/743)
- Keep Bubble tooltip open on format [#744](https://github.com/quilljs/quill/issues/744)
- Fix format loss when copying from Quill [#748](https://github.com/quilljs/quill/issues/748) [#750](https://github.com/quilljs/quill/issues/750)
- Break long lines in Firefox [#751](https://github.com/quilljs/quill/issues/751)
- Fix cursor position being off after formatting and typing quickly [#752](https://github.com/quilljs/quill/issues/752)
- Remove image resizing handles on Firefox [#753](https://github.com/quilljs/quill/issues/753)
- Fix removing blockquote on initialization [#754](https://github.com/quilljs/quill/issues/754)
- Fix adding blank lines on initialization [#756](https://github.com/quilljs/quill/issues/756)
Thank you [abejdaniels](https://github.com/abejdaniels), [benbro](https://github.com/benbro), [davelozier](https://github.com/davelozier), [fernandogmar](https://github.com/fernandogmar), [KameSama](https://github.com/KameSama), and [WriterStat](https://github.com/WriterStat) for contributions to this release.
# 1.0.0-beta.5
Weekly beta preview release.
### Features
- Add blur() [#726](https://github.com/quilljs/quill/pull/726)
### Bug Fixes
- Fix null error [#728](https://github.com/quilljs/quill/issues/728)
- Fix building with Node v6 [#732](https://github.com/quilljs/quill/issues/732)
- Ensure button type for supplied buttons [#733](https://github.com/quilljs/quill/issues/733)
- Fix line break pasting on Firefox [#735](https://github.com/quilljs/quill/issues/735)
- Fix 'user' source on API calls [#739](https://github.com/quilljs/quill/issues/739)
Thanks to [benbro](https://github.com/benbro), [lukechapman](https://github.com/lukechapman), [sachinrekhi](https://github.com/sachinrekhi), and [saw](https://github.com/saw) for their contributions to this release.
# 1.0.0-beta.4
Weekly beta preview release.
### Breaking Changes
- Headers no longer generates id attribute [#700](https://github.com/quilljs/quill/issues/700)
- Add Control+Y hotkey on Windows [#705](https://github.com/quilljs/quill/issues/705)
- BlockEmbed Blots are now length 1 and represented in a Delta the same as an inline embed
- value() used to return object and newline, newline is now removed
- formats used to be attributed on the newline character, it is now attributed on the object
### Features
- Enter on empty and indented list removes indent [#707](https://github.com/quilljs/quill/issues/707)
- Allow base64 images to be inserted via APIs [#721](https://github.com/quilljs/quill/issues/721)
### Bug Fixes
- Fix typing after clearing inline format [#703](https://github.com/quilljs/quill/issues/703)
- Correctly position Bubble tooltip when selecting multiple lines [#706](https://github.com/quilljs/quill/issues/706)
- Fix typing after link format [#708](https://github.com/quilljs/quill/issues/708)
- Fix loss of selection on using link tooltip [#709](https://github.com/quilljs/quill/issues/709)
- Fix `setSelection(null)` [#722](https://github.com/quilljs/quill/issues/722)
Thank you [@benbro](https://github.com/benbro), [@brynjagr](https://github.com/brynjagr), and [@sachinrekhi](https://github.com/sachinrekhi) for contributions to this release.
# 1.0.0-beta.3
Weekly beta preview release.
### Breaking Changes
- Keyboard was incorrectly using `metaKey` to refer to the control key on Windows. It now correctly refers to the Window key and `shortKey` has been added to refer the common platform specific modifier for hotkeys (metaKey for Mac, ctrlKey for Windows/Linux)
- Formula is now a module, since it uses KaTeX
### Features
- Picker now uses text from original `<option>` if available
- Tabbing inside code blocks inserts tab to each line
### Bug Fixes
- Enter preserves inline formats [#666](https://github.com/quilljs/quill/issues/666)
- Fix resetting format button with no selection [#667](https://github.com/quilljs/quill/issues/667)
- Fix paste interpretation from Word [#668](https://github.com/quilljs/quill/issues/668)
- Focus scrolls to correct cursor position [#669](https://github.com/quilljs/quill/issues/669)
- Fix deleting image on otherwise empty document [#670](https://github.com/quilljs/quill/issues/670)
- Fix bubble toolbar formatting [#679](https://github.com/quilljs/quill/issues/679)
- Fix pasting ql-indent lines [#681](https://github.com/quilljs/quill/issues/681)
- Fix getting into state with double underline tag [#695](https://github.com/quilljs/quill/issues/695)
- Fix source type on delete [#697](https://github.com/quilljs/quill/issues/697)
- Fix indent becoming NaN [#698](https://github.com/quilljs/quill/issues/698)
Thanks to [@benbro](https://github.com/benbro), [@Cinamonas](https://github.com/Cinamonas), [@emanuelbsilva](https://github.com/emanuelbsilva), [@jasonmng](https://github.com/jasonmng), [@jonnolen](https://github.com/jonnolen), [@LucVanPelt](https://github.com/LucVanPelt), [@sachinrekhi](https://github.com/sachinrekhi), [@sagacitysite](https://github.com/sagacitysite), [@WriterStat](https://github.com/WriterStat) for their contributions to this release.
# 1.0.0-beta.2
Weekly beta preview release. Major emphasis on keyboard API and customization.
### Breaking Changes
- Rename code highlighter module to syntax
- Clipboard matchers specified in configuration appends to instead of replaces default matchers
- Change video embed to use `<iframe>` instead of `<video>` enabling Youtube/Vimeo links
### Features
- Add contextual keyboard listeners
- Allow indent format to take +1/-1 in addition to target indent level
- Shortcuts for creating ordered or bulleted lists
- Autofill mailto for email links [#278](https://github.com/quilljs/quill/issues/278)
- Enter does not continue header format [#540](https://github.com/quilljs/quill/issues/540)
### Bug Fixes
- Allow native handling of backspace [#473](https://github.com/quilljs/quill/issues/473) [#548](https://github.com/quilljs/quill/issues/548) [#565](https://github.com/quilljs/quill/issues/565)
- removeFormat() removes last line block formats [#649](https://github.com/quilljs/quill/issues/649)
- Fix text direction icon direction [#654](https://github.com/quilljs/quill/issues/654)
- Fix text insertion into root scroll [#655](https://github.com/quilljs/quill/issues/655)
- Fix focusing on placeholder text in FF [#656](https://github.com/quilljs/quill/issues/656)
- Hide placeholder on formatted line [#657](https://github.com/quilljs/quill/issues/657)
- Fix selection handling on focus and blur [#664](https://github.com/quilljs/quill/issues/664)
Thanks to [@anovi](https://github.com/anovi), [@benbro](https://github.com/benbro), [@jbrowning](https://github.com/jbrowning), [@kei-ito](https://github.com/kei-ito), [@quentez](https://github.com/quentez), [@u9520107](https://github.com/u9520107) for their contributions to this release!
# 1.0.0-beta.1
Weekly beta preview release.
### Breaking Changes
- Toolbar only attaches to `<button>` and `<select>` elements
- Toolbar uses button `value` attribute, instead of `data-value`
- Toolbar handlers overwrite default handlers instead of possibly cascading
- Deprecate keyboard `removeBinding` and `removeAllBindings`
### Features
- Expose default keyboard bindings in configuration
- Add context listener to keyboard bindings
### Bug Fixes
- Error when cursor places next to video embed [#644](https://github.com/quilljs/quill/issues/644)
- Selection removed when clicking on a menu button in the toolbar [#645](https://github.com/quilljs/quill/issues/645)
- Editor looses focus in FF after typing two bold characters [#646](https://github.com/quilljs/quill/issues/646)
- Get rid of resize boxes in code in IE11 [0ad636](https://github.com/quilljs/quill/commit/0ad6363c9fcd70c52ca667d39a393760eeb646b5)
- Text direction icon should flip the arrow when pressed [#651](https://github.com/quilljs/quill/issues/651)
- Not possible to combine direction:rtl with text-align:left [#652](https://github.com/quilljs/quill/issues/652)
Thanks to [@benbro](https://github.com/benbro) for the bug reports for this release!
# 1.0.0-beta.0
Please see the [Upgrading to 1.0](http://beta.quilljs.com/guides/upgrading-to-1-0/) guide.
# 0.20.1
Patch release for everything prior to Parchment's integration into Quill.
### Features
- API for hotkey removal [#110](https://github.com/quilljs/quill/issues/110), [#453](https://github.com/quilljs/quill/pull/453)
### Bug Fixes
- Editor jumps to top when clicking formatting buttons [#288](https://github.com/quilljs/quill/issues/288)
- Editor does not preserve bold text when pasted from itself [#306](https://github.com/quilljs/quill/issues/306)
- Focus issues when scrolled down in IE10+ [#415](https://github.com/quilljs/quill/issues/415)
- Error if keyboard shortcut used for unavailable format [#432](https://github.com/quilljs/quill/issues/432)
- Scrolls to cursor if not visible after enter/deletion/paste [#433](https://github.com/quilljs/quill/issues/433)
Thanks to [@devtimi](https://github.com/devtimi), [@emannes](https://github.com/emannes), [@ivan-i](https://github.com/ivan-i), [@magus](https://github.com/magus), [@Nick-The-Uncharted](https://github.com/Nick-The-Uncharted), [@rlivsey](https://github.com/rlivsey), [@thomsbg](https://github.com/thomsbg), [@wallylawless](https://github.com/wallylawless) for their bug reports and pull requests!
# 0.20.0
### Breaking Changes
- `getBounds` now returns `null` instead of throwing an error [#412](https://github.com/quilljs/quill/pull/412)
### Features
- Allow `Document` module to be `Quill.require`'d [#400](https://github.com/quilljs/quill/pull/400)
- Paste manager can optionally accept a custom conversion function [#401](https://github.com/quilljs/quill/pull/401)
- Undo manager can optionally only affect user initiated changes [#413](https://github.com/quilljs/quill/pull/413)
### Bug Fixes
- Retain formats between lines [#403](https://github.com/quilljs/quill/pull/403)
- Fix bug that allows nested format tags [#406](https://github.com/quilljs/quill/pull/406)
- Flatten nested list instead of truncating on paste [#421](https://github.com/quilljs/quill/issues/421)
- Fix handling Chrome's usage of font-weight instead of tags [#423](https://github.com/quilljs/quill/issues/423)
- Fix bug that allows nested parent tags [#426](https://github.com/quilljs/quill/pull/426)
Thank you [@thomsbg](https://github.com/thomsbg), [@yyjhao](https://github.com/yyjhao), [@willrowe](https://github.com/willrowe), [@hryanjones](https://github.com/hryanjones), [@nickretallack](https://github.com/nickretallack) for your contributions to this release!

View File

@ -0,0 +1,74 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at conduct@quilljs.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View File

@ -0,0 +1,4 @@
source 'https://rubygems.org'
gem 'github-pages', '172'
gem 'foreman'

View File

@ -0,0 +1,242 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (4.2.9)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.11.1)
colorator (1.1.0)
commonmarker (0.17.7.1)
ruby-enum (~> 0.5)
concurrent-ruby (1.0.5)
ethon (0.11.0)
ffi (>= 1.3.0)
execjs (2.7.0)
faraday (0.13.1)
multipart-post (>= 1.2, < 3)
ffi (1.9.18)
foreman (0.84.0)
thor (~> 0.19.1)
forwardable-extended (2.6.0)
gemoji (3.0.0)
github-pages (172)
activesupport (= 4.2.9)
github-pages-health-check (= 1.3.5)
jekyll (= 3.6.2)
jekyll-avatar (= 0.5.0)
jekyll-coffeescript (= 1.0.2)
jekyll-commonmark-ghpages (= 0.1.3)
jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.9.2)
jekyll-gist (= 1.4.1)
jekyll-github-metadata (= 2.9.3)
jekyll-mentions (= 1.2.0)
jekyll-optional-front-matter (= 0.3.0)
jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.2.0)
jekyll-redirect-from (= 0.12.1)
jekyll-relative-links (= 0.5.2)
jekyll-remote-theme (= 0.2.3)
jekyll-sass-converter (= 1.5.0)
jekyll-seo-tag (= 2.3.0)
jekyll-sitemap (= 1.1.1)
jekyll-swiss (= 0.4.0)
jekyll-theme-architect (= 0.1.0)
jekyll-theme-cayman (= 0.1.0)
jekyll-theme-dinky (= 0.1.0)
jekyll-theme-hacker (= 0.1.0)
jekyll-theme-leap-day (= 0.1.0)
jekyll-theme-merlot (= 0.1.0)
jekyll-theme-midnight (= 0.1.0)
jekyll-theme-minimal (= 0.1.0)
jekyll-theme-modernist (= 0.1.0)
jekyll-theme-primer (= 0.5.2)
jekyll-theme-slate (= 0.1.0)
jekyll-theme-tactile (= 0.1.0)
jekyll-theme-time-machine (= 0.1.0)
jekyll-titles-from-headings (= 0.5.0)
jemoji (= 0.8.1)
kramdown (= 1.14.0)
liquid (= 4.0.0)
listen (= 3.0.6)
mercenary (~> 0.3)
minima (= 2.1.1)
rouge (= 2.2.1)
terminal-table (~> 1.4)
github-pages-health-check (1.3.5)
addressable (~> 2.3)
net-dns (~> 0.8)
octokit (~> 4.0)
public_suffix (~> 2.0)
typhoeus (~> 0.7)
html-pipeline (2.7.1)
activesupport (>= 2)
nokogiri (>= 1.4)
i18n (0.9.1)
concurrent-ruby (~> 1.0)
jekyll (3.6.2)
addressable (~> 2.4)
colorator (~> 1.0)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 3)
safe_yaml (~> 1.0)
jekyll-avatar (0.5.0)
jekyll (~> 3.0)
jekyll-coffeescript (1.0.2)
coffee-script (~> 2.2)
coffee-script-source (~> 1.11.1)
jekyll-commonmark (1.1.0)
commonmarker (~> 0.14)
jekyll (>= 3.0, < 4.0)
jekyll-commonmark-ghpages (0.1.3)
commonmarker (~> 0.17.6)
jekyll-commonmark (~> 1)
rouge (~> 2)
jekyll-default-layout (0.1.4)
jekyll (~> 3.0)
jekyll-feed (0.9.2)
jekyll (~> 3.3)
jekyll-gist (1.4.1)
octokit (~> 4.2)
jekyll-github-metadata (2.9.3)
jekyll (~> 3.1)
octokit (~> 4.0, != 4.4.0)
jekyll-mentions (1.2.0)
activesupport (~> 4.0)
html-pipeline (~> 2.3)
jekyll (~> 3.0)
jekyll-optional-front-matter (0.3.0)
jekyll (~> 3.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.2.0)
jekyll (~> 3.0)
jekyll-redirect-from (0.12.1)
jekyll (~> 3.3)
jekyll-relative-links (0.5.2)
jekyll (~> 3.3)
jekyll-remote-theme (0.2.3)
jekyll (~> 3.5)
rubyzip (>= 1.2.1, < 3.0)
typhoeus (>= 0.7, < 2.0)
jekyll-sass-converter (1.5.0)
sass (~> 3.4)
jekyll-seo-tag (2.3.0)
jekyll (~> 3.3)
jekyll-sitemap (1.1.1)
jekyll (~> 3.3)
jekyll-swiss (0.4.0)
jekyll-theme-architect (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-cayman (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-dinky (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-hacker (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-leap-day (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-merlot (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-midnight (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-minimal (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-modernist (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-primer (0.5.2)
jekyll (~> 3.5)
jekyll-github-metadata (~> 2.9)
jekyll-seo-tag (~> 2.2)
jekyll-theme-slate (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-tactile (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-time-machine (0.1.0)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-titles-from-headings (0.5.0)
jekyll (~> 3.3)
jekyll-watch (1.5.1)
listen (~> 3.0)
jemoji (0.8.1)
activesupport (~> 4.0, >= 4.2.9)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0)
kramdown (1.14.0)
liquid (4.0.0)
listen (3.0.6)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9.7)
mercenary (0.3.6)
mini_portile2 (2.3.0)
minima (2.1.1)
jekyll (~> 3.3)
minitest (5.11.1)
multipart-post (2.0.0)
net-dns (0.8.0)
nokogiri (1.8.1)
mini_portile2 (~> 2.3.0)
octokit (4.8.0)
sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.1)
forwardable-extended (~> 2.6)
public_suffix (2.0.5)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rouge (2.2.1)
ruby-enum (0.7.1)
i18n
rubyzip (1.2.1)
safe_yaml (1.0.4)
sass (3.5.5)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thor (0.19.4)
thread_safe (0.3.6)
typhoeus (0.8.0)
ethon (>= 0.8.0)
tzinfo (1.2.4)
thread_safe (~> 0.1)
unicode-display_width (1.3.0)
PLATFORMS
ruby
DEPENDENCIES
foreman
github-pages (= 172)
BUNDLED WITH
1.16.1

View File

@ -0,0 +1,30 @@
Copyright (c) 2014, Jason Chen
Copyright (c) 2013, salesforce.com
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,109 @@
<h1 align="center">
<a href="https://quilljs.com/" title="Quill">Quill Rich Text Editor</a>
</h1>
<p align="center">
<a href="https://quilljs.com/" title="Quill"><img alt="Quill Logo" src="https://quilljs.com/assets/images/logo.svg" width="180"></a>
</p>
<p align="center">
<a title="Quickstart" href="#quickstart"><strong>Quickstart</strong></a>
&#x2022;
<a title="Documentation" href="https://quilljs.com/docs/"><strong>Documentation</strong></a>
&#x2022;
<a title="Development" href="https://github.com/quilljs/quill/blob/master/.github/DEVELOPMENT.md"><strong>Development</strong></a>
&#x2022;
<a title="Contributing" href="https://github.com/quilljs/quill/blob/master/.github/CONTRIBUTING.md"><strong>Contributing</strong></a>
&#x2022;
<a title="Interactive Playground" href="https://quilljs.com/playground/"><strong>Interactive Playground</strong></a>
</p>
<p align="center">
<a href="https://travis-ci.org/quilljs/quill" title="Build Status">
<img src="https://travis-ci.org/quilljs/quill.svg?branch=master" alt="Build Status">
</a>
<a href="https://npmjs.com/package/quill" title="Version">
<img src="https://img.shields.io/npm/v/quill.svg" alt="Version">
</a>
<a href="https://npmjs.com/package/quill" title="Downloads">
<img src="https://img.shields.io/npm/dm/quill.svg" alt="Downloads">
</a>
</p>
<p align="center">
<a href="https://saucelabs.com/u/quill" title="Test Status">
<img src="https://cdn.quilljs.com/badge.svg?v=2" alt="Test Status">
</a>
</p>
[QuillJS](https://quilljs.com/) is a modern rich text editor built for compatibility and extensibility. It was created by [Jason Chen](https://twitter.com/jhchen) and [Byron Milligan](https://twitter.com/byronmilligan) and open sourced by Salesforce.
To get started, check out the [Quill](https://quilljs.com/) website for documentation, guides, and live demos!
## Quickstart
Instantiate a new Quill object with a css selector for the div that should become the editor.
```html
<!-- Include Quill stylesheet -->
<link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet">
<!-- Create the toolbar container -->
<div id="toolbar">
<button class="ql-bold">Bold</button>
<button class="ql-italic">Italic</button>
</div>
<!-- Create the editor container -->
<div id="editor">
<p>Hello World!</p>
</div>
<!-- Include the Quill library -->
<script src="https://cdn.quilljs.com/1.0.0/quill.js"></script>
<!-- Initialize Quill editor -->
<script>
var editor = new Quill('#editor', {
modules: { toolbar: '#toolbar' },
theme: 'snow'
});
</script>
```
Take a look at the [Quill](https://quilljs.com/) website for more documentation, guides and [live playground](https://quilljs.com/playground/)!
## Download
- [npm](https://www.npmjs.com/package/quill) - `npm install quill`
- tar - https://github.com/quilljs/quill/releases
### CDN
```html
<!-- Main Quill library -->
<script src="//cdn.quilljs.com/1.0.0/quill.js"></script>
<script src="//cdn.quilljs.com/1.0.0/quill.min.js"></script>
<!-- Theme included stylesheets -->
<link href="//cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet">
<link href="//cdn.quilljs.com/1.0.0/quill.bubble.css" rel="stylesheet">
<!-- Core build with no theme, formatting, non-essential modules -->
<link href="//cdn.quilljs.com/1.0.0/quill.core.css" rel="stylesheet">
<script src="//cdn.quilljs.com/1.0.0/quill.core.js"></script>
```
## Community
Get help or stay up to date.
- [Contribute](https://github.com/quilljs/quill/blob/develop/.github/CONTRIBUTING.md) on [Issues](https://github.com/quilljs/quill/issues)
- Follow [@jhchen](https://twitter.com/jhchen) and [@quilljs](https://twitter.com/quilljs) on Twitter
- Ask questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/quill)
- If privacy is required, email support@quilljs.com
## License
BSD 3-clause

View File

@ -0,0 +1,50 @@
var desktop = {
'mac-chrome-latest' : ['OS X 10.12', 'chrome', '60.0'],
'mac-firefox-latest' : ['OS X 10.12', 'firefox', '54.0'],
'mac-safari-latest' : ['OS X 10.12', 'safari', '11.0'],
'mac-chrome-previous' : ['OS X 10.11', 'chrome', '59.0'],
'mac-firefox-previous' : ['OS X 10.11', 'firefox', '53.0'],
'mac-safari-previous' : ['OS X 10.11', 'safari', '10.0'],
'windows-chrome-latest' : ['Windows 10', 'chrome', '60.0'],
'windows-firefox-latest' : ['Windows 10', 'firefox', '54.0'],
'windows-edge-latest' : ['Windows 10', 'microsoftedge', '15.15063'],
'windows-ie-latest' : ['Windows 8.1', 'internet explorer', '11.0'],
'windows-chrome-previous' : ['Windows 8.1', 'chrome', '59.0'],
'windows-firefox-previous': ['Windows 8.1', 'firefox', '53.0'],
'windows-edge-previous' : ['Windows 10', 'microsoftedge', '14.14393'],
'linux-chrome-latest' : ['Linux', 'chrome', '48.0'],
'linux-firefox-latest' : ['Linux', 'firefox', '45.0'],
'linux-chrome-previous' : ['Linux', 'chrome', '47.0'],
'linux-firefox-previous' : ['Linux', 'firefox', '44.0']
};
var mobile = {
'ios-latest' : ['iPhone 7 Plus', 'iOS', '10.3', 'Safari'],
'ios-previous' : ['iPhone 6 Plus', 'iOS', '9.3', 'Safari'],
'android-latest' : ['Android GoogleAPI Emulator', 'Android', '7.1', 'Chrome'],
'android-previous' : ['Android GoogleAPI Emulator', 'Android', '6.0', 'Chrome']
};
Object.keys(desktop).forEach(function(key) {
module.exports[key] = {
base: 'SauceLabs',
browserName: desktop[key][1],
version: desktop[key][2],
platform: desktop[key][0]
};
});
Object.keys(mobile).forEach(function(key) {
module.exports[key] = {
base: 'SauceLabs',
browserName: mobile[key][3],
appiumVersion: '1.6.4',
deviceName: mobile[key][0],
deviceOrientation: 'portrait',
platformVersion: mobile[key][2],
platformName: mobile[key][1]
};
});

View File

@ -0,0 +1,2 @@
cdn: /
quill: quill.js

View File

@ -0,0 +1,68 @@
var browsers = require('./browsers');
var sauce = require('./sauce');
module.exports = function(config) {
config.set({
basePath: '../',
urlRoot: '/karma/',
port: process.env.npm_package_config_ports_karma,
files: [
{ pattern: 'dist/quill.snow.css', nocache: true },
{ pattern: 'dist/unit.js', nocache: true },
{ pattern: 'dist/*.map', included: false, served: true, nocache: true },
{ pattern: 'assets/favicon.png', included: false, served: true }
],
proxies: {
'/assets/': '/karma/base/assets/'
},
frameworks: ['jasmine'],
reporters: ['progress'],
colors: true,
autoWatch: false,
singleRun: true,
browsers: ['Chrome'],
client: {
useIframe: false
},
coverageReporter: {
dir: '.coverage',
reporters: [
{ type: 'text' },
{ type: 'html' }
]
},
sauceLabs: {
testName: 'quill-unit',
options: {
'public': 'public',
'record-screenshots': false
},
build: sauce.build,
username: sauce.username,
accessKey: sauce.accessKey,
tunnelIdentifier: sauce.tunnel
},
customLaunchers: browsers
});
if (process.env.TRAVIS) {
config.sauceLabs.startConnect = false;
config.transports = ['polling'];
config.browsers = [process.env.BROWSER];
config.browserDisconnectTimeout = 10000;
config.browserDisconnectTolerance = 3;
config.browserNoActivityTimeout = 60000;
config.captureTimeout = 120000;
// MS Edge does not work in an iframe
if (process.env.BROWSER.indexOf('ios') > -1 ||
process.env.BROWSER.indexOf('android') > -1 ||
process.env.BROWSER.indexOf('firefox') > -1) {
config.client.useIframe = true;
}
}
};

View File

@ -0,0 +1,4 @@
jekyll: jekyll serve -s ../docs -d ../docs/_site --port $npm_package_config_ports_jekyll -w --config ../docs/_config.yml,jekyll.yml
karma: karma start karma.config.js --no-single-run --no-browsers
webpack: webpack-dev-server --config webpack.config.js --env.dev
proxy: node proxy.js

View File

@ -0,0 +1,35 @@
var http = require('http');
var httpProxy = require('http-proxy');
var proxy = httpProxy.createProxyServer({});
var ports = {
proxy: parseInt(process.env.npm_package_config_ports_proxy),
jekyll: parseInt(process.env.npm_package_config_ports_jekyll),
karma: parseInt(process.env.npm_package_config_ports_karma),
webpack: parseInt(process.env.npm_package_config_ports_webpack)
};
var server = http.createServer(function(req, res) {
if (/\/\d+\.\d+\.\d+/.test(req.url) || req.url.startsWith('/karma/base/dist')) {
var target = 'http://localhost:' + ports.webpack + '/' + req.url.split('/').pop();
proxy.web(req, res, {
ignorePath: true,
target: target
});
} else if (req.url.startsWith('/karma') || req.url === '/assets/favicon.png') {
proxy.web(req, res, { ignorePath: false, target: { port: ports.karma } });
} else {
proxy.web(req, res, { ignorePath: false, target: { port: ports.jekyll } });
}
});
server.on('upgrade', function (req, socket, head) {
proxy.ws(req, socket, head);
});
proxy.on('error', function(e) {
console.error(e);
});
console.log('Proxy listening on ' + ports.proxy);
server.listen(ports.proxy);

View File

@ -0,0 +1,20 @@
var _ = require('lodash');
var os = require('os');
var options = {
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY
};
if (process.env.TRAVIS) {
module.exports = {
build: process.env.TRAVIS_BUILD_ID,
tunnel: process.env.TRAVIS_JOB_NUMBER
};
} else {
var id = _.random(16*16*16*16).toString(16);
module.exports = {
build: os.hostname() + '-' + id,
tunnel: os.hostname() + '-tunnel-' + id
};
}

View File

@ -0,0 +1,50 @@
#!/bin/bash
VERSION="$1"
if [ -z "$VERSION" ]; then
echo "Version required."
exit
else
echo "Releasing $VERSION"
fi
rm -r .release
rm -r dist
mkdir .release
mkdir .release/quill
npm run build
webpack --config _develop/webpack.config.js --env.minimize
cp dist/quill.core.css dist/quill.bubble.css dist/quill.snow.css dist/quill.js dist/quill.core.js dist/quill.min.js dist/quill.min.js.map .release/quill/
cd .release
printf "cdn: .\nversion: ." > jekyll.yml
jekyll build -s ../docs -d _site --config ../docs/_config.yml,jekyll.yml
mkdir quill/examples
mv _site/standalone/bubble/index.html quill/examples/bubble.html
mv _site/standalone/snow/index.html quill/examples/snow.html
mv _site/standalone/full/index.html quill/examples/full.html
find quill/examples -type f -exec sed -i "" 's/\<link rel\="icon".*\>/ /g' {} \;
find quill/examples -type f -exec sed -i "" 's/href="\/\//href="https:\/\//g' {} \;
find quill/examples -type f -exec sed -i "" 's/src="\/\//src="https:\/\//g' {} \;
tar -czf quill.tar.gz quill
aws s3 cp quill/quill.js s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "application/javascript; charset=utf-8" --profile quill
aws s3 cp quill/quill.min.js s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "application/javascript; charset=utf-8" --profile quill
aws s3 cp quill/quill.core.js s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "application/javascript; charset=utf-8" --profile quill
aws s3 cp quill/quill.bubble.css s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "text/css; charset=utf-8" --profile quill
aws s3 cp quill/quill.core.css s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "text/css; charset=utf-8" --profile quill
aws s3 cp quill/quill.snow.css s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "text/css; charset=utf-8" --profile quill
aws s3 cp quill/quill.min.js.map s3://cdn.quilljs.com/$VERSION/ --cache-control max-age=604800 --content-type "application/json; charset=utf-8" --profile quill
aws s3 sync s3://cdn.quilljs.com/$VERSION/ s3://cdn.quilljs.com/latest/ --profile quill
cd ..
git tag v$VERSION -m "Version $VERSION"
git push origin v$VERSION
git push origin master
npm publish

View File

@ -0,0 +1,19 @@
#!/bin/bash
npm start &
webdriver-manager start 2> /dev/null &
sleep 20s
wdio _develop/wdio.config.js
EXIT_CODE=$?
FOREMAN_PID=$(pgrep foreman)
SELENIUM_PID=$(pgrep -f selenium-server-standalone)
kill -s SIGINT $FOREMAN_PID
kill -s SIGINT $SELENIUM_PID
echo "\n"
exit $EXIT_CODE

View File

@ -0,0 +1,32 @@
exports.config = {
specs: [
'./test/functional/epic.js'
],
exclude: [],
reporters: ['spec'],
maxInstances: 10,
capabilities: [{
browserName: 'chrome'
}],
sync: true,
logLevel: 'error',
coloredLogs: true,
baseUrl: 'http://localhost:' + process.env.npm_package_config_ports_proxy,
waitforTimeout: 10000,
connectionRetryTimeout: 90000,
connectionRetryCount: 3,
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 10000,
expectationResultHandler: function(passed, assertion) {
if (passed) return;
this.saveScreenshot('./wd-' + this.desiredCapabilities.browserName + '-error.png');
}
}
}

View File

@ -0,0 +1,158 @@
var path = require('path');
var pkg = require('../package.json');
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var bannerPack = new webpack.BannerPlugin({
banner:
'Quill Editor v' + pkg.version + '\n' +
'https://quilljs.com/\n' +
'Copyright (c) 2014, Jason Chen\n' +
'Copyright (c) 2013, salesforce.com',
entryOnly: true
});
var constantPack = new webpack.DefinePlugin({
QUILL_VERSION: JSON.stringify(pkg.version)
});
var source = [
'quill.js',
'core.js',
'blots',
'core',
'formats',
'modules',
'test',
'themes',
'ui'
].map(function(file) {
return path.resolve(__dirname, '..', file);
});
module.exports = function(env) {
let config = {
context: path.resolve(__dirname, '..'),
entry: {
'quill.js': ['./quill.js'],
'quill.core.js': ['./core.js'],
'quill.core': './assets/core.styl',
'quill.bubble': './assets/bubble.styl',
'quill.snow': './assets/snow.styl',
'unit.js': './test/unit.js'
},
output: {
filename: '[name]',
library: 'Quill',
libraryExport: 'default',
libraryTarget: 'umd',
path: path.resolve(__dirname, '../dist/')
},
resolve: {
alias: {
'parchment': path.resolve(__dirname, '../node_modules/parchment/src/parchment')
},
extensions: ['.js', '.styl', '.ts']
},
module: {
rules: [{
test: /\.js$/,
use: ['eslint-loader'],
include: source,
enforce: 'pre'
}, {
test: /\.ts$/,
use: [{
loader: 'ts-loader',
options: {
compilerOptions: {
declaration: false,
target: 'es5',
module: 'commonjs'
},
transpileOnly: true
}
}]
}, {
test: /\.styl$/,
include: [
path.resolve(__dirname, '../assets')
],
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader',
'stylus-loader'
]
})
}, {
test: /\.svg$/,
include: [
path.resolve(__dirname, '../assets/icons')
],
use: [{
loader: 'html-loader',
options: {
minimize: true
}
}]
}, {
test: /\.js$/,
include: source,
use: [{
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}]
}],
noParse: [
/\/node_modules\/clone\/clone\.js$/,
/\/node_modules\/eventemitter3\/index\.js$/,
/\/node_modules\/extend\/index\.js$/
]
},
plugins: [
bannerPack,
constantPack,
new ExtractTextPlugin({
filename: '[name].css',
allChunks: true
})
],
devServer: {
contentBase: path.resolve(__dirname, '../dist'),
hot: false,
port: process.env.npm_package_config_ports_webpack,
stats: 'minimal',
disableHostCheck: true
}
};
if (env && env.dev) {
config.module.rules = config.module.rules.slice(1); // Remove linter
config.module.rules[3].use[0].options = {
plugins: ['transform-es2015-modules-commonjs']
};
}
if (env && env.minimize) {
config.entry = {
'quill.min.js': './quill.js'
};
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
sourceMap: true
})
);
config.devtool = 'source-map';
}
if (env && env.coverage) {
config.module.rules[4].use[0].options = {
plugins: ['istanbul', 'transform-es2015-modules-commonjs']
};
}
return config;
};

View File

@ -0,0 +1,304 @@
// Styles shared between snow and bubble
controlHeight = 24px
inputPaddingWidth = 5px
inputPaddingHeight = 3px
colorItemMargin = 2px
colorItemSize = 16px
colorItemsPerRow = 7
.ql-{themeName}.ql-toolbar, .ql-{themeName} .ql-toolbar
&:after
clear: both
content: ''
display: table
button
background: none
border: none
cursor: pointer
display: inline-block
float: left
height: controlHeight
padding: inputPaddingHeight inputPaddingWidth
width: controlHeight + (inputPaddingWidth - inputPaddingHeight)*2
svg
float: left
height: 100%
&:active:hover
outline: none
input.ql-image[type=file]
display: none
button:hover, button:focus, button.ql-active,
.ql-picker-label:hover, .ql-picker-label.ql-active,
.ql-picker-item:hover, .ql-picker-item.ql-selected
color: activeColor
.ql-fill, .ql-stroke.ql-fill
fill: activeColor
.ql-stroke, .ql-stroke-miter
stroke: activeColor
// Fix for iOS not losing hover on touch
@media (pointer: coarse)
.ql-{themeName}.ql-toolbar, .ql-{themeName} .ql-toolbar
button:hover:not(.ql-active)
color: inactiveColor
.ql-fill, .ql-stroke.ql-fill
fill: inactiveColor
.ql-stroke, .ql-stroke-miter
stroke: inactiveColor
.ql-{themeName}
box-sizing: border-box
*
box-sizing: border-box
.ql-hidden
display: none
.ql-out-bottom, .ql-out-top
visibility: hidden
.ql-tooltip
position: absolute
transform: translateY(10px)
a
cursor: pointer
text-decoration: none
.ql-tooltip.ql-flip
transform: translateY(-10px)
.ql-formats
&:after
clear: both
content: ''
display: table
display: inline-block
vertical-align: middle
.ql-stroke
fill: none
stroke: inactiveColor
stroke-linecap: round
stroke-linejoin: round
stroke-width: 2
.ql-stroke-miter
fill: none
stroke: inactiveColor
stroke-miterlimit: 10
stroke-width: 2
.ql-fill, .ql-stroke.ql-fill
fill: inactiveColor
.ql-empty
fill: none
.ql-even
fill-rule: evenodd
.ql-thin, .ql-stroke.ql-thin
stroke-width: 1
.ql-transparent
opacity: 0.4
.ql-direction
svg:last-child
display: none
.ql-direction.ql-active
svg:last-child
display: inline
svg:first-child
display: none
.ql-editor
h1
font-size: 2em
h2
font-size: 1.5em
h3
font-size: 1.17em
h4
font-size: 1em
h5
font-size: 0.83em
h6
font-size: 0.67em
a
text-decoration: underline
blockquote
border-left: 4px solid #ccc
margin-bottom: 5px
margin-top: 5px
padding-left: 16px
code, pre
background-color: #f0f0f0
border-radius: 3px
pre
white-space: pre-wrap
margin-bottom: 5px
margin-top: 5px
padding: 5px 10px
code
font-size: 85%
padding: 2px 4px
pre.ql-syntax
background-color: #23241f
color: #f8f8f2;
overflow: visible
img
max-width: 100%
.ql-picker
color: inactiveColor
display: inline-block
float: left
font-size: 14px
font-weight: 500
height: controlHeight
position: relative
vertical-align: middle
.ql-picker-label
cursor: pointer
display: inline-block
height: 100%
padding-left: 8px
padding-right: 2px
position: relative
width: 100%
&::before
display: inline-block
line-height: 22px
.ql-picker-options
background-color: backgroundColor
display: none
min-width: 100%
padding: 4px 8px
position: absolute
white-space: nowrap
.ql-picker-item
cursor: pointer
display: block
padding-bottom: 5px
padding-top: 5px
.ql-picker.ql-expanded
.ql-picker-label
color: borderColor
z-index: 2
.ql-fill
fill: borderColor
.ql-stroke
stroke: borderColor
.ql-picker-options
display: block
margin-top: -1px
top: 100%
z-index: 1
.ql-color-picker, .ql-icon-picker
width: controlHeight + 4
.ql-picker-label
padding: 2px 4px
svg
right: 4px
.ql-icon-picker
.ql-picker-options
padding: 4px 0px
.ql-picker-item
height: controlHeight
width: controlHeight
padding: 2px 4px
.ql-color-picker
.ql-picker-options
padding: inputPaddingHeight inputPaddingWidth
width: (colorItemSize + 2*colorItemMargin) * colorItemsPerRow + 2*inputPaddingWidth + 2 // +2 for the border
.ql-picker-item
border: 1px solid transparent
float: left
height: colorItemSize
margin: colorItemMargin
padding: 0px
width: colorItemSize
.ql-picker:not(.ql-color-picker):not(.ql-icon-picker)
svg
position: absolute
margin-top: -9px
right: 0
top: 50%
width: 18px
.ql-picker.ql-header, .ql-picker.ql-font, .ql-picker.ql-size
.ql-picker-label[data-label]:not([data-label='']),
.ql-picker-item[data-label]:not([data-label=''])
&::before
content: attr(data-label)
.ql-picker.ql-header
width: 98px
.ql-picker-label::before,
.ql-picker-item::before
content: 'Normal'
for num in (1..6)
.ql-picker-label[data-value=\"{num}\"]::before,
.ql-picker-item[data-value=\"{num}\"]::before
content: 'Heading ' + num
.ql-picker-item[data-value="1"]::before
font-size: 2em
.ql-picker-item[data-value="2"]::before
font-size: 1.5em
.ql-picker-item[data-value="3"]::before
font-size: 1.17em
.ql-picker-item[data-value="4"]::before
font-size: 1em
.ql-picker-item[data-value="5"]::before
font-size: 0.83em
.ql-picker-item[data-value="6"]::before
font-size: 0.67em
.ql-picker.ql-font
width: 108px
.ql-picker-label::before,
.ql-picker-item::before
content: 'Sans Serif'
.ql-picker-label[data-value=serif]::before,
.ql-picker-item[data-value=serif]::before
content: 'Serif'
.ql-picker-label[data-value=monospace]::before,
.ql-picker-item[data-value=monospace]::before
content: 'Monospace'
.ql-picker-item[data-value=serif]::before
font-family: Georgia, Times New Roman, serif;
.ql-picker-item[data-value=monospace]::before
font-family: Monaco, Courier New, monospace;
.ql-picker.ql-size
width: 98px
.ql-picker-label::before,
.ql-picker-item::before
content: 'Normal'
.ql-picker-label[data-value=small]::before,
.ql-picker-item[data-value=small]::before
content: 'Small'
.ql-picker-label[data-value=large]::before,
.ql-picker-item[data-value=large]::before
content: 'Large'
.ql-picker-label[data-value=huge]::before,
.ql-picker-item[data-value=huge]::before
content: 'Huge'
.ql-picker-item[data-value=small]::before
font-size: 10px
.ql-picker-item[data-value=large]::before
font-size: 18px
.ql-picker-item[data-value=huge]::before
font-size: 32px
.ql-color-picker.ql-background
.ql-picker-item
background-color: #fff;
.ql-color-picker.ql-color
.ql-picker-item
background-color: #000;

View File

@ -0,0 +1,45 @@
themeName = 'bubble'
activeColor = #fff
borderColor = #777
backgroundColor = #444
inactiveColor = #ccc
shadowColor = #ddd
textColor = #fff
@import './core'
@import './base'
@import './bubble/*'
.ql-container.ql-bubble:not(.ql-disabled)
a
position: relative
white-space: nowrap
a::before
background-color: #444
border-radius: 15px
top: -5px
font-size: 12px
color: #fff
content: attr(href)
font-weight: normal
overflow: hidden
padding: 5px 15px
text-decoration: none
z-index: 1
a::after
border-top: 6px solid #444
border-left: 6px solid transparent
border-right: 6px solid transparent
top: 0
content: " "
height: 0
width: 0
a::before, a::after
left: 0
margin-left: 50%
position: absolute
transform: translate(-50%, -100%)
transition: visibility 0s ease 200ms
visibility: hidden
a:hover::before, a:hover::after
visibility: visible

View File

@ -0,0 +1,14 @@
arrowWidth = 6px
.ql-bubble
.ql-toolbar
.ql-formats
margin: 8px 12px 8px 0px
.ql-formats:first-child
margin-left: 12px
.ql-color-picker
svg
margin: 1px
.ql-picker-item.ql-selected, .ql-picker-item:hover
border-color: activeColor

View File

@ -0,0 +1,49 @@
arrowWidth = 6px
.ql-bubble
.ql-tooltip
background-color: backgroundColor
border-radius: 25px
color: textColor
.ql-tooltip-arrow
border-left: arrowWidth solid transparent
border-right: arrowWidth solid transparent
content: " "
display: block
left: 50%
margin-left: -1 * arrowWidth
position: absolute
.ql-tooltip:not(.ql-flip) .ql-tooltip-arrow
border-bottom: arrowWidth solid backgroundColor
top: -1 * arrowWidth
.ql-tooltip.ql-flip .ql-tooltip-arrow
border-top: arrowWidth solid backgroundColor
bottom: -1 * arrowWidth
.ql-tooltip.ql-editing
.ql-tooltip-editor
display: block
.ql-formats
visibility: hidden
.ql-tooltip-editor
display: none
input[type=text]
background: transparent
border: none
color: textColor
font-size: 13px
height: 100%
outline: none
padding: 10px 20px
position: absolute
width: 100%
a
&:before
color: inactiveColor
content: "\00D7"
font-size: 16px
font-weight: bold
top: 10px
position: absolute
right: 20px

View File

@ -0,0 +1,183 @@
// Styles necessary for Quill
LIST_STYLE = decimal lower-alpha lower-roman
LIST_STYLE_WIDTH = 1.2em
LIST_STYLE_MARGIN = 0.3em
LIST_STYLE_OUTER_WIDTH = LIST_STYLE_MARGIN + LIST_STYLE_WIDTH
MAX_INDENT = 9
resets(arr)
unquote('list-' + join(' list-', arr))
.ql-container
box-sizing: border-box
font-family: Helvetica, Arial, sans-serif
font-size: 13px
height: 100%
margin: 0px
position: relative
.ql-container.ql-disabled
.ql-tooltip
visibility: hidden
.ql-editor
ul[data-checked] > li::before
pointer-events: none
.ql-clipboard
left: -100000px
height: 1px
overflow-y: hidden
position: absolute
top: 50%
p
margin: 0
padding: 0
.ql-editor
box-sizing: border-box
line-height: 1.42
height: 100%
outline: none
overflow-y: auto
padding: 12px 15px
tab-size: 4
-moz-tab-size: 4
text-align: left
white-space: pre-wrap
word-wrap: break-word
> *
cursor: text
p, ol, ul, pre, blockquote, h1, h2, h3, h4, h5, h6
margin: 0
padding: 0
counter-reset: resets(1..MAX_INDENT)
ol, ul
padding-left: 1.5em
ol > li, ul > li
list-style-type: none
ul > li::before
content: '\2022'
ul[data-checked=true],
ul[data-checked=false]
pointer-events: none
> li *
pointer-events: all
> li::before
color: #777
cursor: pointer
pointer-events: all
ul[data-checked=true] > li::before
content: '\2611'
ul[data-checked=false] > li::before
content: '\2610'
li::before
display: inline-block
white-space: nowrap
width: LIST_STYLE_WIDTH
li:not(.ql-direction-rtl)::before
margin-left: -1*LIST_STYLE_OUTER_WIDTH
margin-right: LIST_STYLE_MARGIN
text-align: right
li.ql-direction-rtl::before
margin-left: LIST_STYLE_MARGIN
margin-right: -1*LIST_STYLE_OUTER_WIDTH
ol, ul
li:not(.ql-direction-rtl)
padding-left: LIST_STYLE_OUTER_WIDTH
li.ql-direction-rtl
padding-right: LIST_STYLE_OUTER_WIDTH
ol
li
counter-reset: resets(1..MAX_INDENT)
counter-increment: unquote('list-0')
&:before
content: unquote('counter(list-0, ' + LIST_STYLE[0] + ')') '. '
for num in (1..MAX_INDENT)
li.ql-indent-{num}
counter-increment: unquote('list-' + num)
&:before
content: unquote('counter(list-' + num + ', ' + LIST_STYLE[num%3] + ')') '. '
if (num < MAX_INDENT)
li.ql-indent-{num}
counter-reset: resets((num+1)..MAX_INDENT)
for num in (1..MAX_INDENT)
.ql-indent-{num}:not(.ql-direction-rtl)
padding-left: (3*num)em
li.ql-indent-{num}:not(.ql-direction-rtl)
padding-left: (3*num + LIST_STYLE_OUTER_WIDTH)em
.ql-indent-{num}.ql-direction-rtl.ql-align-right
padding-right: (3*num)em
li.ql-indent-{num}.ql-direction-rtl.ql-align-right
padding-right: (3*num + LIST_STYLE_OUTER_WIDTH)em
.ql-video
display: block
max-width: 100%
.ql-video.ql-align-center
margin: 0 auto
.ql-video.ql-align-right
margin: 0 0 0 auto
.ql-bg-black
background-color: rgb(0,0,0)
.ql-bg-red
background-color: rgb(230,0,0)
.ql-bg-orange
background-color: rgb(255,153,0)
.ql-bg-yellow
background-color: rgb(255,255,0)
.ql-bg-green
background-color: rgb(0,138,0)
.ql-bg-blue
background-color: rgb(0,102,204)
.ql-bg-purple
background-color: rgb(153,51,255)
.ql-color-white
color: rgb(255,255,255)
.ql-color-red
color: rgb(230,0,0)
.ql-color-orange
color: rgb(255,153,0)
.ql-color-yellow
color: rgb(255,255,0)
.ql-color-green
color: rgb(0,138,0)
.ql-color-blue
color: rgb(0,102,204)
.ql-color-purple
color: rgb(153,51,255)
.ql-font-serif
font-family: Georgia, Times New Roman, serif
.ql-font-monospace
font-family: Monaco, Courier New, monospace
.ql-size-small
font-size: 0.75em
.ql-size-large
font-size: 1.5em
.ql-size-huge
font-size: 2.5em
.ql-direction-rtl
direction: rtl
text-align: inherit
.ql-align-center
text-align: center
.ql-align-justify
text-align: justify
.ql-align-right
text-align: right
.ql-editor.ql-blank::before
color: rgba(0,0,0,0.6)
content: attr(data-placeholder)
font-style: italic
left: 15px
pointer-events: none
position: absolute
right: 15px

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line>
<line class="ql-stroke" x1="14" x2="4" y1="14" y2="14"></line>
<line class="ql-stroke" x1="12" x2="6" y1="4" y2="4"></line>
</svg>

After

Width:  |  Height:  |  Size: 223 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line>
<line class="ql-stroke" x1="15" x2="3" y1="14" y2="14"></line>
<line class="ql-stroke" x1="15" x2="3" y1="4" y2="4"></line>
</svg>

After

Width:  |  Height:  |  Size: 223 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line>
<line class="ql-stroke" x1="3" x2="13" y1="14" y2="14"></line>
<line class="ql-stroke" x1="3" x2="9" y1="4" y2="4"></line>
</svg>

After

Width:  |  Height:  |  Size: 222 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line>
<line class="ql-stroke" x1="15" x2="5" y1="14" y2="14"></line>
<line class="ql-stroke" x1="15" x2="9" y1="4" y2="4"></line>
</svg>

After

Width:  |  Height:  |  Size: 223 B

View File

@ -0,0 +1,3 @@
<svg viewbox="0 0 18 18">
<path class="ql-stroke" d="M6.6,11.4L9,9a1.456,1.456,0,0,1,2.059,2.059L7.971,14.147a2.912,2.912,0,0,1-4.118-4.118l6.177-6.177a2.912,2.912,0,0,1,4.118,4.118"></path>
</svg>

After

Width:  |  Height:  |  Size: 199 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<ellipse class="ql-fill" cx="10.5" cy="14" rx="2.5" ry="2"></ellipse>
<path class="ql-stroke" d="M12,14V3c0,1.5,3,2.021,3,5"></path>
<path class="ql-fill" d="M7,4A5,5,0,0,0,7,14a3.191,3.191,0,0,1,3-2.957V5.023A4.955,4.955,0,0,0,7,4ZM4.06,8.412a0.5,0.5,0,0,1-.49.4,0.485,0.485,0,0,1-.1-0.01,0.5,0.5,0,0,1-.393-0.588A3.98,3.98,0,0,1,6.216,5.079a0.5,0.5,0,0,1,.2.98A2.985,2.985,0,0,0,4.06,8.412ZM7,10A1,1,0,1,1,8,9,1,1,0,0,1,7,10Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 475 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="3" x2="15" y1="15" y2="15"></line>
<path class="ql-fill ql-stroke" d="M9,8H9a3,3,0,0,1,3,3v0a0,0,0,0,1,0,0H6a0,0,0,0,1,0,0v0A3,3,0,0,1,9,8Z"></path>
<path class="ql-even ql-fill" d="M11,5.01C11,6.021,10,9,9,9S7,6.021,7,5.01c0-1.651.292-2.99,2-2.99S11,3.359,11,5.01Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 341 B

View File

@ -0,0 +1,52 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-color-label">
<polygon points="6 6.868 6 6 5 6 5 7 5.942 7 6 6.868"></polygon>
<rect height="1" width="1" x="4" y="4"></rect>
<polygon points="6.817 5 6 5 6 6 6.38 6 6.817 5"></polygon>
<rect height="1" width="1" x="2" y="6"></rect>
<rect height="1" width="1" x="3" y="5"></rect>
<rect height="1" width="1" x="4" y="7"></rect>
<polygon points="4 11.439 4 11 3 11 3 12 3.755 12 4 11.439"></polygon>
<rect height="1" width="1" x="2" y="12"></rect>
<rect height="1" width="1" x="2" y="9"></rect>
<rect height="1" width="1" x="2" y="15"></rect>
<polygon points="4.63 10 4 10 4 11 4.192 11 4.63 10"></polygon>
<rect height="1" width="1" x="3" y="8"></rect>
<path d="M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z"></path>
<path d="M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z"></path>
<path d="M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z"></path>
<rect height="1" width="1" x="12" y="2"></rect>
<rect height="1" width="1" x="11" y="3"></rect>
<path d="M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z"></path>
<rect height="1" width="1" x="2" y="3"></rect>
<rect height="1" width="1" x="6" y="2"></rect>
<rect height="1" width="1" x="3" y="2"></rect>
<rect height="1" width="1" x="5" y="3"></rect>
<rect height="1" width="1" x="9" y="2"></rect>
<rect height="1" width="1" x="15" y="14"></rect>
<polygon points="13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174"></polygon>
<rect height="1" width="1" x="13" y="7"></rect>
<rect height="1" width="1" x="15" y="5"></rect>
<rect height="1" width="1" x="14" y="6"></rect>
<rect height="1" width="1" x="15" y="8"></rect>
<rect height="1" width="1" x="14" y="9"></rect>
<path d="M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z"></path>
<rect height="1" width="1" x="14" y="3"></rect>
<polygon points="12 6.868 12 6 11.62 6 12 6.868"></polygon>
<rect height="1" width="1" x="15" y="2"></rect>
<rect height="1" width="1" x="12" y="5"></rect>
<rect height="1" width="1" x="13" y="4"></rect>
<polygon points="12.933 9 13 9 13 8 12.495 8 12.933 9"></polygon>
<rect height="1" width="1" x="9" y="14"></rect>
<rect height="1" width="1" x="8" y="15"></rect>
<path d="M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z"></path>
<rect height="1" width="1" x="5" y="15"></rect>
<path d="M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z"></path>
<rect height="1" width="1" x="11" y="15"></rect>
<path d="M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z"></path>
<rect height="1" width="1" x="14" y="15"></rect>
<rect height="1" width="1" x="15" y="11"></rect>
</g>
<polyline class="ql-stroke" points="5.5 13 9 5 12.5 13"></polyline>
<line class="ql-stroke" x1="11.63" x2="6.38" y1="11" y2="11"></line>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<rect class="ql-fill ql-stroke" height="3" width="3" x="4" y="5"></rect>
<rect class="ql-fill ql-stroke" height="3" width="3" x="11" y="5"></rect>
<path class="ql-even ql-fill ql-stroke" d="M7,8c0,4.031-3,5-3,5"></path>
<path class="ql-even ql-fill ql-stroke" d="M14,8c0,4.031-3,5-3,5"></path>
</svg>

After

Width:  |  Height:  |  Size: 334 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<path class="ql-stroke" d="M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z"></path>
<path class="ql-stroke" d="M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 281 B

View File

@ -0,0 +1,7 @@
<svg class="" viewbox="0 0 18 18">
<line class="ql-stroke" x1="5" x2="13" y1="3" y2="3"></line>
<line class="ql-stroke" x1="6" x2="9.35" y1="12" y2="3"></line>
<line class="ql-stroke" x1="11" x2="15" y1="11" y2="15"></line>
<line class="ql-stroke" x1="15" x2="11" y1="11" y2="15"></line>
<rect class="ql-fill" height="1" rx="0.5" ry="0.5" width="7" x="2" y="14"></rect>
</svg>

After

Width:  |  Height:  |  Size: 386 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<polyline class="ql-even ql-stroke" points="5 7 3 9 5 11"></polyline>
<polyline class="ql-even ql-stroke" points="13 7 15 9 13 11"></polyline>
<line class="ql-stroke" x1="10" x2="8" y1="5" y2="13"></line>
</svg>

After

Width:  |  Height:  |  Size: 243 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-color-label ql-stroke ql-transparent" x1="3" x2="15" y1="15" y2="15"></line>
<polyline class="ql-stroke" points="5.5 11 9 3 12.5 11"></polyline>
<line class="ql-stroke" x1="11.63" x2="6.38" y1="9" y2="9"></line>
</svg>

After

Width:  |  Height:  |  Size: 266 B

View File

@ -0,0 +1,3 @@
<svg viewbox="0 0 18 18">
<path class="ql-stroke" d="M9,3C5.686,3,3,5.239,3,8a4.669,4.669,0,0,0,2,3.719V15l3.094-2.063A7.186,7.186,0,0,0,9,13c3.314,0,6-2.239,6-5S12.314,3,9,3Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 193 B

View File

@ -0,0 +1,7 @@
<svg viewbox="0 0 18 18">
<polygon class="ql-stroke ql-fill" points="3 11 5 9 3 7 3 11"></polygon>
<line class="ql-stroke ql-fill" x1="15" x2="11" y1="4" y2="4"></line>
<path class="ql-fill" d="M11,3a3,3,0,0,0,0,6h1V3H11Z"></path>
<rect class="ql-fill" height="11" width="1" x="11" y="4"></rect>
<rect class="ql-fill" height="11" width="1" x="13" y="4"></rect>
</svg>

After

Width:  |  Height:  |  Size: 377 B

View File

@ -0,0 +1,7 @@
<svg viewbox="0 0 18 18">
<polygon class="ql-stroke ql-fill" points="15 12 13 10 15 8 15 12"></polygon>
<line class="ql-stroke ql-fill" x1="9" x2="5" y1="4" y2="4"></line>
<path class="ql-fill" d="M5,3A3,3,0,0,0,5,9H6V3H5Z"></path>
<rect class="ql-fill" height="11" width="1" x="5" y="4"></rect>
<rect class="ql-fill" height="11" width="1" x="7" y="4"></rect>
</svg>

After

Width:  |  Height:  |  Size: 376 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<polygon class="ql-stroke" points="7 11 9 13 11 11 7 11"></polygon>
<polygon class="ql-stroke" points="7 7 9 5 11 7 7 7"></polygon>
</svg>

After

Width:  |  Height:  |  Size: 168 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M14.60284,8.5036A2.48315,2.48315,0,0,0,14.71429,7.8a2.34494,2.34494,0,0,0-2.28571-2.4,2.19651,2.19651,0,0,0-1.3631.48358A4.01147,4.01147,0,0,0,7.28571,3a4.1037,4.1037,0,0,0-4,4.2,4.40682,4.40682,0,0,0,.07642.79553A3.57444,3.57444,0,0,0,1,11.4,3.51743,3.51743,0,0,0,4.42859,15h9.42853A3.22436,3.22436,0,0,0,17,11.7,3.26609,3.26609,0,0,0,14.60284,8.5036ZM6.85352,10.64648a.49995.49995,0,1,1-.707.707l-1-1a.49982.49982,0,0,1,0-.707l1-1a.49995.49995,0,0,1,.707.707L6.207,10ZM9.48535,8.12109l-1,4A.5.5,0,0,1,8,12.5a.51952.51952,0,0,1-.12109-.01465.50066.50066,0,0,1-.36426-.60645l1-4a.50023.50023,0,0,1,.9707.24219Zm2.36816,2.23242-1,1a.49995.49995,0,0,1-.707-.707L10.793,10l-.64648-.64648a.49995.49995,0,0,1,.707-.707l1,1A.49982.49982,0,0,1,11.85352,10.35352Z"/>
</svg>

After

Width:  |  Height:  |  Size: 818 B

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<circle class="ql-fill" cx="7" cy="7" r="1"></circle>
<circle class="ql-fill" cx="11" cy="7" r="1"></circle>
<path class="ql-stroke" d="M7,10a2,2,0,0,0,4,0H7Z"></path>
<circle class="ql-stroke" cx="9" cy="9" r="6"></circle>
</svg>

After

Width:  |  Height:  |  Size: 264 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z"/>
<path class="ql-fill" d="M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z"/>
<rect class="ql-fill" x="3" y="6" width="12" height="6" rx="1" ry="1"/>
</svg>

After

Width:  |  Height:  |  Size: 250 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z"/>
<path class="ql-fill" d="M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z"/>
<rect class="ql-fill" x="2" y="6" width="14" height="6" rx="1" ry="1"/>
</svg>

After

Width:  |  Height:  |  Size: 248 B

View File

@ -0,0 +1,7 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z"/>
<path class="ql-fill" d="M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z"/>
<path class="ql-fill" d="M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z"/>
<path class="ql-fill" d="M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z"/>
<rect class="ql-fill" x="2" y="6" width="8" height="6" rx="1" ry="1"/>
</svg>

After

Width:  |  Height:  |  Size: 393 B

View File

@ -0,0 +1,7 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z"/>
<path class="ql-fill" d="M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z"/>
<path class="ql-fill" d="M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z"/>
<path class="ql-fill" d="M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z"/>
<rect class="ql-fill" x="8" y="6" width="8" height="6" rx="1" ry="1" transform="translate(24 18) rotate(-180)"/>
</svg>

After

Width:  |  Height:  |  Size: 429 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<polyline class="ql-stroke" points="3.5 14 7 4 10.5 14"></polyline>
<line class="ql-stroke" x1="9.45" x2="4.55" y1="11" y2="11"></line>
<path class="ql-fill" d="M13.636,5.013a4.016,4.016,0,0,0-1.863.472,0.42,0.42,0,0,0-.179.629l0.112,0.214a0.418,0.418,0,0,0,.625.191,2.557,2.557,0,0,1,1.183-.326A0.933,0.933,0,0,1,14.573,7.2V7.338H14.339c-1.272,0-3.325.281-3.325,1.954A1.75,1.75,0,0,0,12.9,11.011a2.072,2.072,0,0,0,1.785-1.078h0.022a1.132,1.132,0,0,0-.022.247V10.4a0.412,0.412,0,0,0,.457.472h0.379A0.416,0.416,0,0,0,15.99,10.4V7.293A2.121,2.121,0,0,0,13.636,5.013Zm0.948,3.4a1.452,1.452,0,0,1-1.305,1.505,0.775,0.775,0,0,1-.859-0.753c0-.854,1.216-0.966,1.93-0.966h0.234V8.416Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 724 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z"></path>
<rect class="ql-fill" height="1.6" rx="0.8" ry="0.8" width="5" x="5.15" y="6.2"></rect>
<path class="ql-fill" d="M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="7" x2="6" y1="3" y2="15"></line>
<line class="ql-stroke" x1="12" x2="11" y1="3" y2="15"></line>
<line class="ql-stroke" x1="3.75" x2="14.75" y1="7" y2="7"></line>
<line class="ql-stroke" x1="3.25" x2="14.25" y1="11" y2="11"></line>
</svg>

After

Width:  |  Height:  |  Size: 300 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"/>
</svg>

After

Width:  |  Height:  |  Size: 641 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M16.65186,12.30664a2.6742,2.6742,0,0,1-2.915,2.68457,3.96592,3.96592,0,0,1-2.25537-.6709.56007.56007,0,0,1-.13232-.83594L11.64648,13c.209-.34082.48389-.36328.82471-.1543a2.32654,2.32654,0,0,0,1.12256.33008c.71484,0,1.12207-.35156,1.12207-.78125,0-.61523-.61621-.86816-1.46338-.86816H13.2085a.65159.65159,0,0,1-.68213-.41895l-.05518-.10937a.67114.67114,0,0,1,.14307-.78125l.71533-.86914a8.55289,8.55289,0,0,1,.68213-.7373V8.58887a3.93913,3.93913,0,0,1-.748.05469H11.9873a.54085.54085,0,0,1-.605-.60547V7.59863a.54085.54085,0,0,1,.605-.60547h3.75146a.53773.53773,0,0,1,.60547.59375v.17676a1.03723,1.03723,0,0,1-.27539.748L14.74854,10.0293A2.31132,2.31132,0,0,1,16.65186,12.30664ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"/>
</svg>

After

Width:  |  Height:  |  Size: 851 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm7.05371,7.96582v.38477c0,.39648-.165.60547-.46191.60547h-.47314v1.29785a.54085.54085,0,0,1-.605.60547h-.69336a.54085.54085,0,0,1-.605-.60547V12.95605H11.333a.5412.5412,0,0,1-.60547-.60547v-.15332a1.199,1.199,0,0,1,.22021-.748l2.56348-4.05957a.7819.7819,0,0,1,.72607-.39648h1.27637a.54085.54085,0,0,1,.605.60547v3.7627h.33008A.54055.54055,0,0,1,17.05371,11.96582ZM14.28125,8.7207h-.022a4.18969,4.18969,0,0,1-.38525.81348l-1.188,1.80469v.02246h1.5293V9.60059A7.04058,7.04058,0,0,1,14.28125,8.7207Z"/>
</svg>

After

Width:  |  Height:  |  Size: 639 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M16.74023,12.18555a2.75131,2.75131,0,0,1-2.91553,2.80566,3.908,3.908,0,0,1-2.25537-.68164.54809.54809,0,0,1-.13184-.8252L11.73438,13c.209-.34082.48389-.36328.8252-.1543a2.23757,2.23757,0,0,0,1.1001.33008,1.01827,1.01827,0,0,0,1.1001-.96777c0-.61621-.53906-.97949-1.25439-.97949a2.15554,2.15554,0,0,0-.64893.09961,1.15209,1.15209,0,0,1-.814.01074l-.12109-.04395a.64116.64116,0,0,1-.45117-.71484l.231-3.00391a.56666.56666,0,0,1,.62744-.583H15.541a.54085.54085,0,0,1,.605.60547v.43945a.54085.54085,0,0,1-.605.60547H13.41748l-.04395.72559a1.29306,1.29306,0,0,1-.04395.30859h.022a2.39776,2.39776,0,0,1,.57227-.07715A2.53266,2.53266,0,0,1,16.74023,12.18555ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"/>
</svg>

After

Width:  |  Height:  |  Size: 825 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M14.51758,9.64453a1.85627,1.85627,0,0,0-1.24316.38477H13.252a1.73532,1.73532,0,0,1,1.72754-1.4082,2.66491,2.66491,0,0,1,.5498.06641c.35254.05469.57227.01074.70508-.40723l.16406-.5166a.53393.53393,0,0,0-.373-.75977,4.83723,4.83723,0,0,0-1.17773-.14258c-2.43164,0-3.7627,2.17773-3.7627,4.43359,0,2.47559,1.60645,3.69629,3.19043,3.69629A2.70585,2.70585,0,0,0,16.96,12.19727,2.43861,2.43861,0,0,0,14.51758,9.64453Zm-.23047,3.58691c-.67187,0-1.22168-.81445-1.22168-1.45215,0-.47363.30762-.583.72559-.583.96875,0,1.27734.59375,1.27734,1.12207A.82182.82182,0,0,1,14.28711,13.23145ZM10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 717 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z"/>
</svg>

After

Width:  |  Height:  |  Size: 577 B

View File

@ -0,0 +1,4 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M15,12v2a.99942.99942,0,0,1-1,1H4a.99942.99942,0,0,1-1-1V12a1,1,0,0,1,2,0v1h8V12a1,1,0,0,1,2,0ZM14,3H4A.99942.99942,0,0,0,3,4V6A1,1,0,0,0,5,6V5h8V6a1,1,0,0,0,2,0V4A.99942.99942,0,0,0,14,3Z"/>
<path class="ql-fill" d="M15,10H3A1,1,0,0,1,3,8H15a1,1,0,0,1,0,2Z"/>
</svg>

After

Width:  |  Height:  |  Size: 322 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<rect class="ql-stroke" height="10" width="12" x="3" y="4"></rect>
<circle class="ql-fill" cx="6" cy="7" r="1"></circle>
<polyline class="ql-even ql-fill" points="5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12"></polyline>
</svg>

After

Width:  |  Height:  |  Size: 254 B

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="3" x2="15" y1="14" y2="14"></line>
<line class="ql-stroke" x1="3" x2="15" y1="4" y2="4"></line>
<line class="ql-stroke" x1="9" x2="15" y1="9" y2="9"></line>
<polyline class="ql-fill ql-stroke" points="3 7 3 11 5 9 3 7"></polyline>
</svg>

After

Width:  |  Height:  |  Size: 299 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="7" x2="13" y1="4" y2="4"></line>
<line class="ql-stroke" x1="5" x2="11" y1="14" y2="14"></line>
<line class="ql-stroke" x1="8" x2="10" y1="14" y2="4"></line>
</svg>

After

Width:  |  Height:  |  Size: 224 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="7" x2="11" y1="7" y2="11"></line>
<path class="ql-even ql-stroke" d="M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z"></path>
<path class="ql-even ql-stroke" d="M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 431 B

View File

@ -0,0 +1,8 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="6" x2="15" y1="4" y2="4"></line>
<line class="ql-stroke" x1="6" x2="15" y1="9" y2="9"></line>
<line class="ql-stroke" x1="6" x2="15" y1="14" y2="14"></line>
<line class="ql-stroke" x1="3" x2="3" y1="4" y2="4"></line>
<line class="ql-stroke" x1="3" x2="3" y1="9" y2="9"></line>
<line class="ql-stroke" x1="3" x2="3" y1="14" y2="14"></line>
</svg>

After

Width:  |  Height:  |  Size: 411 B

View File

@ -0,0 +1,8 @@
<svg class="" viewbox="0 0 18 18">
<line class="ql-stroke" x1="9" x2="15" y1="4" y2="4"></line>
<polyline class="ql-stroke" points="3 4 4 5 6 3"></polyline>
<line class="ql-stroke" x1="9" x2="15" y1="14" y2="14"></line>
<polyline class="ql-stroke" points="3 14 4 15 6 13"></polyline>
<line class="ql-stroke" x1="9" x2="15" y1="9" y2="9"></line>
<polyline class="ql-stroke" points="3 9 4 10 6 8"></polyline>
</svg>

After

Width:  |  Height:  |  Size: 425 B

View File

@ -0,0 +1,9 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="7" x2="15" y1="4" y2="4"></line>
<line class="ql-stroke" x1="7" x2="15" y1="9" y2="9"></line>
<line class="ql-stroke" x1="7" x2="15" y1="14" y2="14"></line>
<line class="ql-stroke ql-thin" x1="2.5" x2="4.5" y1="5.5" y2="5.5"></line>
<path class="ql-fill" d="M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z"></path>
<path class="ql-stroke ql-thin" d="M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156"></path>
<path class="ql-stroke ql-thin" d="M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109"></path>
</svg>

After

Width:  |  Height:  |  Size: 764 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<path class="ql-stroke" d="M12,5c0,1.1-2,4-2,4S8,6.1,8,5A2,2,0,0,1,12,5Z"></path>
<path class="ql-fill" d="M15.472,2.118a1,1,0,0,0-1.026.05l-1.067.712A3.944,3.944,0,0,1,14,4.869h0v7.6L12,13.8l-2.445-1.63a1,1,0,0,0-1.109,0L6,13.8,4,12.465v-7.6L5.445,5.832a0.992,0.992,0,0,0,.717.144A3.742,3.742,0,0,1,6,5a3.956,3.956,0,0,1,.258-1.374L6,3.8,3.555,2.168A1,1,0,0,0,2,3V13a1,1,0,0,0,.445.832l3,2a1,1,0,0,0,1.109,0L9,14.2l2.445,1.63a1,1,0,0,0,1.109,0l3-2A1,1,0,0,0,16,13V3A1,1,0,0,0,15.472,2.118Z"></path>
<path class="ql-fill" d="M12.092,14.938a4.2,4.2,0,0,0-1.936-3.032c-1.125-.656-2.425.738-2.75-0.687A2.036,2.036,0,0,0,5.688,9.656,2.878,2.878,0,0,0,3,8.653V13l3,2,3-2,3,2Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 718 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<circle class="ql-stroke" cx="9" cy="9" r="2"></circle>
<path class="ql-stroke" d="M11,14.651A6,6,0,1,1,15,9a2,2,0,0,1-4,0V7"></path>
</svg>

After

Width:  |  Height:  |  Size: 170 B

View File

@ -0,0 +1,3 @@
<svg viewBox="0 0 18 18">
<path class="ql-fill" d="M6,9.5A1.5,1.5,0,1,1,4.5,8,1.5,1.5,0,0,1,6,9.5ZM9.5,8A1.5,1.5,0,1,0,11,9.5,1.5,1.5,0,0,0,9.5,8Zm5,0A1.5,1.5,0,1,0,16,9.5,1.5,1.5,0,0,0,14.5,8Z"/>
</svg>

After

Width:  |  Height:  |  Size: 205 B

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="3" x2="15" y1="14" y2="14"></line>
<line class="ql-stroke" x1="3" x2="15" y1="4" y2="4"></line>
<line class="ql-stroke" x1="9" x2="15" y1="9" y2="9"></line>
<polyline class="ql-stroke" points="5 7 5 11 3 9 5 7"></polyline>
</svg>

After

Width:  |  Height:  |  Size: 291 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<polygon class="ql-fill ql-stroke" points="12 10 14 12 16 10 12 10"></polygon>
<path class="ql-stroke" d="M9.91,13.91A4.6,4.6,0,0,1,9,14a5,5,0,1,1,5-5"></path>
</svg>

After

Width:  |  Height:  |  Size: 196 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<polyline class="ql-stroke" points="3.5 14 7 4 10.5 14"></polyline>
<line class="ql-stroke" x1="9.45" x2="4.55" y1="11" y2="11"></line>
<rect class="ql-fill" height="5" rx="0.5" ry="0.5" transform="translate(20 -7) rotate(90)" width="1" x="13" y="4"></rect>
</svg>

After

Width:  |  Height:  |  Size: 296 B

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<polyline class="ql-stroke" points="3.5 14 7 4 10.5 14"></polyline>
<line class="ql-stroke" x1="9.45" x2="4.55" y1="11" y2="11"></line>
<rect class="ql-fill" height="5" rx="0.5" ry="0.5" width="1" x="13" y="4"></rect>
<rect class="ql-fill" height="5" rx="0.5" ry="0.5" transform="translate(20 -7) rotate(90)" width="1" x="13" y="4"></rect>
</svg>

After

Width:  |  Height:  |  Size: 380 B

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<polyline class="ql-stroke" points="3.5 14 7 4 10.5 14"></polyline>
<line class="ql-stroke" x1="9.45" x2="4.55" y1="11" y2="11"></line>
<path class="ql-fill" d="M12.09,7.55l1.7-1.473a0.337,0.337,0,0,1,.429,0l1.7,1.473A0.261,0.261,0,0,1,15.7,8H12.3A0.261,0.261,0,0,1,12.09,7.55Z"></path>
<path class="ql-fill" d="M12.09,10.45l1.7,1.473a0.337,0.337,0,0,0,.429,0l1.7-1.473A0.261,0.261,0,0,0,15.7,10H12.3A0.261,0.261,0,0,0,12.09,10.45Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 481 B

View File

@ -0,0 +1,9 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke" x1="10" x2="15" y1="4" y2="4"></line>
<line class="ql-stroke" x1="10" x2="15" y1="9" y2="9"></line>
<line class="ql-stroke" x1="10" x2="15" y1="14" y2="14"></line>
<polygon class="ql-fill ql-stroke" points="3 5 5 3 7 5 3 5"></polygon>
<line class="ql-stroke" x1="5" x2="5" y1="7" y2="5"></line>
<polygon class="ql-fill ql-stroke" points="3 13 5 15 7 13 3 13"></polygon>
<line class="ql-stroke" x1="5" x2="5" y1="11" y2="13"></line>
</svg>

After

Width:  |  Height:  |  Size: 502 B

View File

@ -0,0 +1,6 @@
<svg viewbox="0 0 18 18">
<path class="ql-stroke" d="M5,8a4,4,0,0,0,8,0"></path>
<line class="ql-stroke" x1="6" x2="12" y1="15" y2="15"></line>
<line class="ql-stroke" x1="9" x2="9" y1="12" y2="15"></line>
<rect class="ql-fill" height="8" rx="2" ry="2" width="4" x="7" y="2"></rect>
</svg>

After

Width:  |  Height:  |  Size: 297 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<line class="ql-stroke ql-thin" x1="15.5" x2="2.5" y1="8.5" y2="9.5"></line>
<path class="ql-fill" d="M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z"></path>
<path class="ql-fill" d="M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 543 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z"/>
<path class="ql-fill" d="M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z"/>
</svg>

After

Width:  |  Height:  |  Size: 686 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z"/>
<path class="ql-fill" d="M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z"/>
</svg>

After

Width:  |  Height:  |  Size: 567 B

View File

@ -0,0 +1,5 @@
<svg viewbox="0 0 18 18">
<rect class="ql-stroke-miter" height="12" width="12" x="3" y="3"></rect>
<line class="ql-stroke-miter" x1="9" x2="9" y1="3" y2="15"></line>
<line class="ql-stroke-miter" x1="15" x2="3" y1="9" y2="9"></line>
</svg>

After

Width:  |  Height:  |  Size: 246 B

View File

@ -0,0 +1,28 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="2" transform="translate(18 -12) rotate(90)" width="2" x="14" y="2"></rect>
<rect height="2" transform="translate(21 -9) rotate(90)" width="2" x="14" y="5"></rect>
<rect height="2" transform="translate(24 -6) rotate(90)" width="2" x="14" y="8"></rect>
<rect height="2" transform="translate(30 0) rotate(90)" width="2" x="14" y="14"></rect>
<rect height="2" transform="translate(27 -3) rotate(90)" width="2" x="14" y="11"></rect>
<rect height="2" transform="translate(6 0) rotate(90)" width="2" x="2" y="2"></rect>
<rect height="2" transform="translate(9 3) rotate(90)" width="2" x="2" y="5"></rect>
<rect height="2" transform="translate(12 6) rotate(90)" width="2" x="2" y="8"></rect>
<rect height="2" transform="translate(18 12) rotate(90)" width="2" x="2" y="14"></rect>
<rect height="2" transform="translate(15 9) rotate(90)" width="2" x="2" y="11"></rect>
</g>
<line class="ql-stroke-miter" x1="2" x2="16" y1="15" y2="15"></line>
<g class="ql-fill ql-transparent">
<rect height="2" width="2" x="5" y="2"></rect>
<rect height="2" width="2" x="8" y="2"></rect>
<rect height="2" width="2" x="11" y="2"></rect>
<rect height="2" width="2" x="5" y="14"></rect>
<rect height="2" width="2" x="8" y="14"></rect>
<rect height="2" width="2" x="8" y="11"></rect>
<rect height="2" width="2" x="8" y="8"></rect>
<rect height="2" width="2" x="8" y="5"></rect>
<rect height="2" transform="translate(15 3) rotate(90)" width="2" x="5" y="8"></rect>
<rect height="2" transform="translate(21 -3) rotate(90)" width="2" x="11" y="8"></rect>
<rect height="2" width="2" x="11" y="14"></rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,28 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="2" transform="translate(30 6) rotate(180)" width="2" x="14" y="2"></rect>
<rect height="2" transform="translate(24 6) rotate(180)" width="2" x="11" y="2"></rect>
<rect height="2" transform="translate(18 6) rotate(180)" width="2" x="8" y="2"></rect>
<rect height="2" transform="translate(6 6) rotate(180)" width="2" x="2" y="2"></rect>
<rect height="2" transform="translate(12 6) rotate(180)" width="2" x="5" y="2"></rect>
<rect height="2" transform="translate(30 30) rotate(180)" width="2" x="14" y="14"></rect>
<rect height="2" transform="translate(24 30) rotate(180)" width="2" x="11" y="14"></rect>
<rect height="2" transform="translate(18 30) rotate(180)" width="2" x="8" y="14"></rect>
<rect height="2" transform="translate(6 30) rotate(180)" width="2" x="2" y="14"></rect>
<rect height="2" transform="translate(12 30) rotate(180)" width="2" x="5" y="14"></rect>
</g>
<line class="ql-stroke-miter" x1="3" x2="3" y1="16" y2="2"></line>
<g class="ql-fill ql-transparent">
<rect height="2" transform="translate(3 27) rotate(-90)" width="2" x="14" y="11"></rect>
<rect height="2" transform="translate(6 24) rotate(-90)" width="2" x="14" y="8"></rect>
<rect height="2" transform="translate(9 21) rotate(-90)" width="2" x="14" y="5"></rect>
<rect height="2" transform="translate(-9 15) rotate(-90)" width="2" x="2" y="11"></rect>
<rect height="2" transform="translate(-6 12) rotate(-90)" width="2" x="2" y="8"></rect>
<rect height="2" transform="translate(-3 15) rotate(-90)" width="2" x="5" y="8"></rect>
<rect height="2" transform="translate(0 18) rotate(-90)" width="2" x="8" y="8"></rect>
<rect height="2" transform="translate(3 21) rotate(-90)" width="2" x="11" y="8"></rect>
<rect height="2" transform="translate(18 24) rotate(180)" width="2" x="8" y="11"></rect>
<rect height="2" transform="translate(18 12) rotate(180)" width="2" x="8" y="5"></rect>
<rect height="2" transform="translate(-3 9) rotate(-90)" width="2" x="2" y="5"></rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,25 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="2" width="2" x="2" y="2"></rect>
<rect height="2" width="2" x="5" y="2"></rect>
<rect height="2" width="2" x="8" y="2"></rect>
<rect height="2" width="2" x="14" y="2"></rect>
<rect height="2" width="2" x="11" y="2"></rect>
<rect height="2" width="2" x="2" y="14"></rect>
<rect height="2" width="2" x="5" y="14"></rect>
<rect height="2" width="2" x="8" y="14"></rect>
<rect height="2" width="2" x="14" y="14"></rect>
<rect height="2" width="2" x="11" y="14"></rect>
<rect height="2" transform="translate(-9 15) rotate(-90)" width="2" x="2" y="11"></rect>
<rect height="2" transform="translate(-6 12) rotate(-90)" width="2" x="2" y="8"></rect>
<rect height="2" transform="translate(-3 9) rotate(-90)" width="2" x="2" y="5"></rect>
<rect height="2" transform="translate(3 27) rotate(-90)" width="2" x="14" y="11"></rect>
<rect height="2" transform="translate(6 24) rotate(-90)" width="2" x="14" y="8"></rect>
<rect height="2" transform="translate(3 21) rotate(-90)" width="2" x="11" y="8"></rect>
<rect height="2" transform="translate(0 18) rotate(-90)" width="2" x="8" y="8"></rect>
<rect height="2" transform="translate(-3 15) rotate(-90)" width="2" x="5" y="8"></rect>
<rect height="2" width="2" x="8" y="11"></rect>
<rect height="2" width="2" x="8" y="5"></rect>
<rect height="2" transform="translate(9 21) rotate(-90)" width="2" x="14" y="5"></rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,35 @@
<svg viewbox="0 0 18 18">
<defs>
<style>
.cls-1{opacity:0.4;}
.cls-2{fill:#444;}
.cls-3{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2px;}
</style>
</defs>
<g class="ql-fill ql-transparent">
<rect height="2" width="2" x="2" y="2"></rect>
<rect height="2" width="2" x="5" y="2"></rect>
<rect height="2" width="2" x="8" y="2"></rect>
<rect height="2" width="2" x="14" y="2"></rect>
<rect height="2" width="2" x="11" y="2"></rect>
<rect height="2" width="2" x="2" y="14"></rect>
<rect height="2" width="2" x="5" y="14"></rect>
<rect height="2" width="2" x="8" y="14"></rect>
</g>
<rect class="ql-stroke-miter" height="12" width="12" x="3" y="3"></rect>
<g class="ql-fill ql-transparent">
<rect height="2" width="2" x="14" y="14"></rect>
<rect height="2" width="2" x="11" y="14"></rect>
<rect height="2" transform="translate(-9 15) rotate(-90)" width="2" x="2" y="11"></rect>
<rect height="2" transform="translate(-6 12) rotate(-90)" width="2" x="2" y="8"></rect>
<rect height="2" transform="translate(-3 9) rotate(-90)" width="2" x="2" y="5"></rect>
<rect height="2" transform="translate(3 27) rotate(-90)" width="2" x="14" y="11"></rect>
<rect height="2" transform="translate(6 24) rotate(-90)" width="2" x="14" y="8"></rect>
<rect height="2" transform="translate(3 21) rotate(-90)" width="2" x="11" y="8"></rect>
<rect height="2" transform="translate(0 18) rotate(-90)" width="2" x="8" y="8"></rect>
<rect height="2" transform="translate(-3 15) rotate(-90)" width="2" x="5" y="8"></rect>
<rect height="2" width="2" x="8" y="11"></rect>
<rect height="2" width="2" x="8" y="5"></rect>
<rect height="2" transform="translate(9 21) rotate(-90)" width="2" x="14" y="5"></rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,28 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="2" width="2" x="2" y="2"></rect>
<rect height="2" width="2" x="5" y="2"></rect>
<rect height="2" width="2" x="8" y="2"></rect>
<rect height="2" width="2" x="14" y="2"></rect>
<rect height="2" width="2" x="11" y="2"></rect>
<rect height="2" width="2" x="2" y="14"></rect>
<rect height="2" width="2" x="5" y="14"></rect>
<rect height="2" width="2" x="8" y="14"></rect>
<rect height="2" width="2" x="14" y="14"></rect>
<rect height="2" width="2" x="11" y="14"></rect>
</g>
<line class="ql-stroke-miter" x1="15" x2="15" y1="16" y2="2"></line>
<g class="ql-fill ql-transparent">
<rect height="2" transform="translate(-9 15) rotate(-90)" width="2" x="2" y="11"></rect>
<rect height="2" transform="translate(-6 12) rotate(-90)" width="2" x="2" y="8"></rect>
<rect height="2" transform="translate(-3 9) rotate(-90)" width="2" x="2" y="5"></rect>
<rect height="2" transform="translate(3 27) rotate(-90)" width="2" x="14" y="11"></rect>
<rect height="2" transform="translate(6 24) rotate(-90)" width="2" x="14" y="8"></rect>
<rect height="2" transform="translate(3 21) rotate(-90)" width="2" x="11" y="8"></rect>
<rect height="2" transform="translate(0 18) rotate(-90)" width="2" x="8" y="8"></rect>
<rect height="2" transform="translate(-3 15) rotate(-90)" width="2" x="5" y="8"></rect>
<rect height="2" width="2" x="8" y="11"></rect>
<rect height="2" width="2" x="8" y="5"></rect>
<rect height="2" transform="translate(9 21) rotate(-90)" width="2" x="14" y="5"></rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,28 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="2" transform="translate(-12 18) rotate(-90)" width="2" x="2" y="14"></rect>
<rect height="2" transform="translate(-9 15) rotate(-90)" width="2" x="2" y="11"></rect>
<rect height="2" transform="translate(-6 12) rotate(-90)" width="2" x="2" y="8"></rect>
<rect height="2" transform="translate(0 6) rotate(-90)" width="2" x="2" y="2"></rect>
<rect height="2" transform="translate(-3 9) rotate(-90)" width="2" x="2" y="5"></rect>
<rect height="2" transform="translate(0 30) rotate(-90)" width="2" x="14" y="14"></rect>
<rect height="2" transform="translate(3 27) rotate(-90)" width="2" x="14" y="11"></rect>
<rect height="2" transform="translate(6 24) rotate(-90)" width="2" x="14" y="8"></rect>
<rect height="2" transform="translate(12 18) rotate(-90)" width="2" x="14" y="2"></rect>
<rect height="2" transform="translate(9 21) rotate(-90)" width="2" x="14" y="5"></rect>
</g>
<line class="ql-stroke-miter" x1="16" x2="2" y1="3" y2="3"></line>
<g class="ql-fill ql-transparent">
<rect height="2" transform="translate(24 30) rotate(-180)" width="2" x="11" y="14"></rect>
<rect height="2" transform="translate(18 30) rotate(-180)" width="2" x="8" y="14"></rect>
<rect height="2" transform="translate(12 30) rotate(-180)" width="2" x="5" y="14"></rect>
<rect height="2" transform="translate(24 6) rotate(-180)" width="2" x="11" y="2"></rect>
<rect height="2" transform="translate(18 6) rotate(-180)" width="2" x="8" y="2"></rect>
<rect height="2" transform="translate(18 12) rotate(-180)" width="2" x="8" y="5"></rect>
<rect height="2" transform="translate(18 18) rotate(-180)" width="2" x="8" y="8"></rect>
<rect height="2" transform="translate(18 24) rotate(-180)" width="2" x="8" y="11"></rect>
<rect height="2" transform="translate(3 21) rotate(-90)" width="2" x="11" y="8"></rect>
<rect height="2" transform="translate(-3 15) rotate(-90)" width="2" x="5" y="8"></rect>
<rect height="2" transform="translate(12 6) rotate(-180)" width="2" x="5" y="2"></rect>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,13 @@
<svg viewbox="0 0 18 18">
<path class="ql-fill" d="M15.707,7l1.146-1.146a0.5,0.5,0,1,0-.707-0.707L15,6.293,13.854,5.146a0.5,0.5,0,0,0-.707.707L14.293,7,13.146,8.146a0.5,0.5,0,1,0,.707.707L15,7.707l1.146,1.146a0.5,0.5,0,1,0,.707-0.707Z"></path>
<path class="ql-fill" d="M6,5H3A1,1,0,0,0,2,6V8A1,1,0,0,0,3,9H6V5Z"></path>
<path class="ql-fill" d="M10,5H7V9h3a1,1,0,0,0,1-1V6A1,1,0,0,0,10,5Z"></path>
<g class="ql-fill ql-transparent">
<path d="M8,11h4V9a1,1,0,0,0-1-1H8v3Z"></path>
<path d="M7,11V8H4A1,1,0,0,0,3,9v2H7Z"></path>
<path d="M7,12H3v2a1,1,0,0,0,1,1H7V12Z"></path>
<path d="M8,12v3h3a1,1,0,0,0,1-1V12H8Z"></path>
<path d="M8,6h3a1,1,0,0,0,1-1V3a1,1,0,0,0-1-1H8V6Z"></path>
<path d="M4,6H7V2H4A1,1,0,0,0,3,3V5A1,1,0,0,0,4,6Z"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 788 B

View File

@ -0,0 +1,8 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="10" rx="1" ry="1" width="4" x="2" y="6"></rect>
<rect height="10" rx="1" ry="1" width="4" x="12" y="6"></rect>
</g>
<rect class="ql-fill" height="8" rx="1" ry="1" width="4" x="7" y="2"></rect>
<path class="ql-fill" d="M9.707,13l1.146-1.146a0.5,0.5,0,0,0-.707-0.707L9,12.293,7.854,11.146a0.5,0.5,0,0,0-.707.707L8.293,13,7.146,14.146a0.5,0.5,0,1,0,.707.707L9,13.707l1.146,1.146a0.5,0.5,0,0,0,.707-0.707Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 508 B

View File

@ -0,0 +1,9 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-stroke ql-thin ql-transparent">
<rect height="3" rx="0.5" ry="0.5" width="7" x="4.5" y="2.5"></rect>
<rect height="3" rx="0.5" ry="0.5" width="7" x="4.5" y="12.5"></rect>
</g>
<rect class="ql-fill ql-stroke ql-thin" height="3" rx="0.5" ry="0.5" width="7" x="8.5" y="7.5"></rect>
<line class="ql-stroke ql-thin" x1="6.5" x2="3.5" y1="7.5" y2="10.5"></line>
<line class="ql-stroke ql-thin" x1="3.5" x2="6.5" y1="7.5" y2="10.5"></line>
</svg>

After

Width:  |  Height:  |  Size: 504 B

View File

@ -0,0 +1,13 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<path d="M11,11h4V9a1,1,0,0,0-1-1H11v3Z"></path>
<path d="M10,11V8H7A1,1,0,0,0,6,9v2h4Z"></path>
<path d="M10,12H6v2a1,1,0,0,0,1,1h3V12Z"></path>
<path d="M11,12v3h3a1,1,0,0,0,1-1V12H11Z"></path>
<path d="M11,6h3a1,1,0,0,0,1-1V3a1,1,0,0,0-1-1H11V6Z"></path>
<path d="M7,6h3V2H7A1,1,0,0,0,6,3V5A1,1,0,0,0,7,6Z"></path>
</g>
<path class="ql-fill" d="M5,6H4V5a0.5,0.5,0,0,0-.854-0.354l-2,2a0.5,0.5,0,0,0,0,.707l2,2A0.5,0.5,0,0,0,3.5,9.5a0.494,0.494,0,0,0,.191-0.038A0.5,0.5,0,0,0,4,9V8H5A1,1,0,0,0,5,6Z"></path>
<path class="ql-fill" d="M15,5H12V9h3a1,1,0,0,0,1-1V6A1,1,0,0,0,15,5Z"></path>
<path class="ql-fill" d="M11,5H8A1,1,0,0,0,7,6V8A1,1,0,0,0,8,9h3V5Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 766 B

View File

@ -0,0 +1,8 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-transparent">
<rect height="10" rx="1" ry="1" width="4" x="12" y="2"></rect>
<rect height="10" rx="1" ry="1" width="4" x="2" y="2"></rect>
</g>
<path class="ql-fill" d="M11.354,4.146l-2-2a0.5,0.5,0,0,0-.707,0l-2,2A0.5,0.5,0,0,0,7,5H8V6a1,1,0,0,0,2,0V5h1A0.5,0.5,0,0,0,11.354,4.146Z"></path>
<rect class="ql-fill" height="8" rx="1" ry="1" width="4" x="7" y="8"></rect>
</svg>

After

Width:  |  Height:  |  Size: 437 B

View File

@ -0,0 +1,9 @@
<svg viewbox="0 0 18 18">
<g class="ql-fill ql-stroke ql-thin ql-transparent">
<rect height="3" rx="0.5" ry="0.5" width="7" x="4.5" y="2.5"></rect>
<rect height="3" rx="0.5" ry="0.5" width="7" x="4.5" y="12.5"></rect>
</g>
<rect class="ql-fill ql-stroke ql-thin" height="3" rx="0.5" ry="0.5" width="7" x="8.5" y="7.5"></rect>
<polygon class="ql-fill ql-stroke ql-thin" points="4.5 11 2.5 9 4.5 7 4.5 11"></polygon>
<line class="ql-stroke" x1="6" x2="4" y1="9" y2="9"></line>
</svg>

After

Width:  |  Height:  |  Size: 499 B

View File

@ -0,0 +1,4 @@
<svg viewbox="0 0 18 18">
<rect class="ql-stroke" height="4" width="12" x="3" y="7"></rect>
<path class="ql-fill ql-transparent" d="M2,2V16H16V2H2ZM14,14H10V11H8v3H4V4H8V7h2V4h4V14Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 201 B

View File

@ -0,0 +1,7 @@
<svg viewbox="0 0 18 18">
<rect class="ql-stroke" height="4" width="12" x="3" y="7"></rect>
<path class="ql-fill ql-transparent" d="M2,2V16H16V2H2ZM14,14H10V11H8v3H4V4H8V7h2V4h4V14Z"></path>
<line class="ql-stroke" x1="12" x2="12" y1="11" y2="7"></line>
<line class="ql-stroke" x1="9" x2="9" y1="11" y2="7"></line>
<line class="ql-stroke" x1="6" x2="6" y1="11" y2="7"></line>
</svg>

After

Width:  |  Height:  |  Size: 392 B

Some files were not shown because too many files have changed in this diff Show More