| @@ -31,66 +31,66 @@ h1{ | |||||
| /* MOTS */ | /* MOTS */ | ||||
| /*// — Mot - Accronyme*/ | /*// — Mot - Accronyme*/ | ||||
| .acronym{ | |||||
| span[data-type=acronym]{ | |||||
| color: pink; | color: pink; | ||||
| } | } | ||||
| /*// — Mot - Etranger*/ | /*// — Mot - Etranger*/ | ||||
| .foreign{ | |||||
| span[data-type=foreign]{ | |||||
| color: red; | color: red; | ||||
| } | } | ||||
| /* NOMS */ | /* NOMS */ | ||||
| /*// — Nom - Auteur - Citation*/ | /*// — Nom - Auteur - Citation*/ | ||||
| .author-quotation{ | |||||
| span[data-type=author-quotation]{ | |||||
| color : yellow; | color : yellow; | ||||
| } | } | ||||
| /*// — Nom - Auteur - Œuvre*/ | /*// — Nom - Auteur - Œuvre*/ | ||||
| .author-work{ | |||||
| span[data-type=author-work]{ | |||||
| color: orange; | color: orange; | ||||
| } | } | ||||
| /*// — Nom - Marque*/ | /*// — Nom - Marque*/ | ||||
| .brand{ | |||||
| span[data-type=brand]{ | |||||
| color: coral; | color: coral; | ||||
| } | } | ||||
| .work{ | |||||
| span[data-type=work]{ | |||||
| color: brown; | color: brown; | ||||
| } | } | ||||
| /*// — Nom - Propre*/ | /*// — Nom - Propre*/ | ||||
| .proper-noun{ | |||||
| span[data-type=proper-noun]{ | |||||
| color: darkorange; | color: darkorange; | ||||
| } | } | ||||
| /* NOMBRES */ | /* NOMBRES */ | ||||
| /*// — Numeral - Chapitre*/ | /*// — Numeral - Chapitre*/ | ||||
| .chapter{ | |||||
| span[data-type=chapter]{ | |||||
| color: blue; | color: blue; | ||||
| } | } | ||||
| /*// — Numeral - Date*/ | /*// — Numeral - Date*/ | ||||
| .date{ | |||||
| span[data-type=date]{ | |||||
| color: aqua; | color: aqua; | ||||
| } | } | ||||
| /*// — Numeral - Siecle*/ | /*// — Numeral - Siecle*/ | ||||
| .century{ | |||||
| span[data-type=century]{ | |||||
| color: cornflowerblue; | color: cornflowerblue; | ||||
| } | } | ||||
| /*TYPO */ | /*TYPO */ | ||||
| /*// — Typo - Exposant*/ | /*// — Typo - Exposant*/ | ||||
| .superscript{ | |||||
| span[data-type=superscript]{ | |||||
| color: green; | color: green; | ||||
| font-variant-position: super; | font-variant-position: super; | ||||
| } | } | ||||
| /*// — Typo - Indice*/ | /*// — Typo - Indice*/ | ||||
| .subscript{ | |||||
| span[data-type=subscript]{ | |||||
| color:chartreuse; | color:chartreuse; | ||||
| font-variant-position: sub; | font-variant-position: sub; | ||||
| } | } | ||||
| .emphasis{ | |||||
| span[data-type=emphasis]{ | |||||
| font-style: italic; | font-style: italic; | ||||
| } | } | ||||
| @@ -105,5 +105,3 @@ h1{ | |||||
| } | } | ||||
| } | } | ||||
| @@ -67,8 +67,8 @@ | |||||
| <a v-for="style in opt.styles" v-bind:key="style.label"> | <a v-for="style in opt.styles" v-bind:key="style.label"> | ||||
| <button | <button | ||||
| class="menubar__button" | class="menubar__button" | ||||
| :class="{ 'is-active': isActive.customstyle({ type: style.class }) }" | |||||
| @click="commands.customstyle({ type: style.class })"> | |||||
| :class="{ 'is-active': isActive[style.type]() }" | |||||
| @click="commands[style.type]({ type: style.type })"> | |||||
| {{style.label | capitalize}} | {{style.label | capitalize}} | ||||
| </button> | </button> | ||||
| </a> | </a> | ||||
| @@ -188,7 +188,7 @@ | |||||
| import AboutPane from './AboutPane'; | import AboutPane from './AboutPane'; | ||||
| import Environment from "../environments/Environement" | import Environment from "../environments/Environement" | ||||
| import CustomStyle from "./extensions/CustomStyle" | |||||
| import CustomStyle from "../extensions/CustomStyle" | |||||
| export default { | export default { | ||||
| @@ -201,6 +201,8 @@ | |||||
| AboutPane | AboutPane | ||||
| }, | }, | ||||
| data() { | data() { | ||||
| return { | return { | ||||
| nbWords: 0, | nbWords: 0, | ||||
| nbParagraphs: 0, | nbParagraphs: 0, | ||||
| @@ -213,29 +215,7 @@ | |||||
| isPreviewMode: false, | isPreviewMode: false, | ||||
| environment: new Environment(), | environment: new Environment(), | ||||
| keepInBounds: true, | keepInBounds: true, | ||||
| editor: new Editor({ | |||||
| extensions: [ | |||||
| new Blockquote(), | |||||
| new BulletList(), | |||||
| new Heading({levels: [1, 2, 3]}), | |||||
| new ListItem(), | |||||
| new OrderedList(), | |||||
| new BulletList(), | |||||
| new Link(), | |||||
| new CustomStyle() | |||||
| ], | |||||
| content: ``, | |||||
| onInit: () => { | |||||
| }, | |||||
| onUpdate: () => { | |||||
| Countable.count(document.getElementById('dedediteur'), counter => this.updateCountInfos(counter), {stripTags: false}); | |||||
| } | |||||
| }), | |||||
| editor: null, | |||||
| linkUrl: null, | linkUrl: null, | ||||
| linkMenuIsActive: false, | linkMenuIsActive: false, | ||||
| } | } | ||||
| @@ -249,7 +229,34 @@ | |||||
| fetch('/dedediteur/sample-mounier.html').then(function (response) { | fetch('/dedediteur/sample-mounier.html').then(function (response) { | ||||
| return response.text(); | return response.text(); | ||||
| }).then(function (html) { | }).then(function (html) { | ||||
| self.editor.setContent(html); | |||||
| let extensions = [ | |||||
| new Blockquote(), | |||||
| new BulletList(), | |||||
| new Heading({levels: [1, 2, 3]}), | |||||
| new ListItem(), | |||||
| new OrderedList(), | |||||
| new BulletList(), | |||||
| new Link()]; | |||||
| for(let i = 0; i < self.environment.getCharacterOptions().length; i++){ | |||||
| let styles = (self.environment.getCharacterOptions()[i]).styles | |||||
| for(let j = 0; j < styles.length; j++){ | |||||
| extensions.push(new CustomStyle(styles[j].type)); | |||||
| } | |||||
| } | |||||
| self.editor = new Editor({ | |||||
| extensions: extensions, | |||||
| content: html, | |||||
| onInit: () => { | |||||
| }, | |||||
| onUpdate: () => { | |||||
| Countable.count(document.getElementById('dedediteur'), counter => self.updateCountInfos(counter), {stripTags: false}); | |||||
| } | |||||
| }), | |||||
| self.$nextTick().then(() => { | self.$nextTick().then(() => { | ||||
| Countable.count(document.getElementById('dedediteur'), counter => self.updateCountInfos(counter), {stripTags: false}) | Countable.count(document.getElementById('dedediteur'), counter => self.updateCountInfos(counter), {stripTags: false}) | ||||
| }) | }) | ||||
| @@ -1,64 +0,0 @@ | |||||
| import {Mark} from "tiptap"; | |||||
| import {updateMark} from "tiptap-commands"; | |||||
| // — Mot - Accronyme | |||||
| // — Mot - Etranger | |||||
| // — Nom - Auteur - Citation | |||||
| // — Nom - Auteur - Œuvre | |||||
| // — Nom - Marque | |||||
| // — Nom - Propre | |||||
| // — Numeral - Chapitre | |||||
| // — Numeral - Date | |||||
| // — Numeral - Siecle | |||||
| // — Typo - Particulier | |||||
| export default class CustomStyle extends Mark { | |||||
| get name() { | |||||
| return "customstyle"; | |||||
| } | |||||
| get defaultOptions() { | |||||
| return { | |||||
| types: [ | |||||
| // "acronym", | |||||
| // "foreign", | |||||
| // "author-quotation", | |||||
| // "author-work", | |||||
| // "brand", | |||||
| // "proper-noun", | |||||
| // "century", | |||||
| // "date", | |||||
| // "chapter" | |||||
| ] | |||||
| }; | |||||
| } | |||||
| get schema() { | |||||
| return { | |||||
| attrs: { | |||||
| type: { | |||||
| default: "" | |||||
| } | |||||
| }, | |||||
| parseDOM: [ | |||||
| { | |||||
| tag: "span.dede-style", | |||||
| getAttrs(dom) { | |||||
| return {type: dom.classList}; | |||||
| } | |||||
| } | |||||
| ], | |||||
| toDOM: mark => { | |||||
| return ["span", {class: `dede-style ${mark.attrs.type}`}, 0]; | |||||
| } | |||||
| }; | |||||
| } | |||||
| commands({type}) { | |||||
| return attrs => { return updateMark(type, attrs);} | |||||
| } | |||||
| } | |||||
| @@ -25,37 +25,37 @@ export default class Environment { | |||||
| styles: [ | styles: [ | ||||
| { | { | ||||
| "label": "étranger", | "label": "étranger", | ||||
| "class": "foreign" | |||||
| "type": "foreign" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "accronyme", | "label": "accronyme", | ||||
| "class": "acronym" | |||||
| "type": "acronym" | |||||
| } | } | ||||
| ] | ] | ||||
| }, | }, | ||||
| // | |||||
| { | { | ||||
| label: "nom", | label: "nom", | ||||
| styles: [ | styles: [ | ||||
| { | { | ||||
| "label": "Auteur - Citation", | "label": "Auteur - Citation", | ||||
| "class": "author-quotation" | |||||
| "type": "author-quotation" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "Auteur - Œuvre", | "label": "Auteur - Œuvre", | ||||
| "class": "author-work" | |||||
| "type": "author-work" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "Marque", | "label": "Marque", | ||||
| "class": "brand" | |||||
| "type": "brand" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "Nom œuvre", | "label": "Nom œuvre", | ||||
| "class": "work" | |||||
| "type": "work" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "Nom propre", | "label": "Nom propre", | ||||
| "class": "proper-noun" | |||||
| "type": "proper-noun" | |||||
| } | } | ||||
| ] | ] | ||||
| }, | }, | ||||
| @@ -65,15 +65,15 @@ export default class Environment { | |||||
| styles: [ | styles: [ | ||||
| { | { | ||||
| "label": "siècle", | "label": "siècle", | ||||
| "class": "century" | |||||
| "type": "century" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "date", | "label": "date", | ||||
| "class": "date" | |||||
| "type": "date" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "chapitre", | "label": "chapitre", | ||||
| "class": "chapter" | |||||
| "type": "chapter" | |||||
| } | } | ||||
| ] | ] | ||||
| }, | }, | ||||
| @@ -82,15 +82,15 @@ export default class Environment { | |||||
| styles: [ | styles: [ | ||||
| { | { | ||||
| "label": "italique", | "label": "italique", | ||||
| "class": "emphasis" | |||||
| "type": "emphasis" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "indice", | "label": "indice", | ||||
| "class": "subscript" | |||||
| "type": "subscript" | |||||
| }, | }, | ||||
| { | { | ||||
| "label": "exposant", | "label": "exposant", | ||||
| "class": "superscript" | |||||
| "type": "superscript" | |||||
| } | } | ||||
| ] | ] | ||||
| @@ -0,0 +1,55 @@ | |||||
| import {Mark} from "tiptap"; | |||||
| import {toggleMark} from "tiptap-commands"; | |||||
| // — Mot - Accronyme | |||||
| // — Mot - Etranger | |||||
| // — Nom - Auteur - Citation | |||||
| // — Nom - Auteur - Œuvre | |||||
| // — Nom - Marque | |||||
| // — Nom - Propre | |||||
| // — Numeral - Chapitre | |||||
| // — Numeral - Date | |||||
| // — Numeral - Siecle | |||||
| // — Typo - Particulier | |||||
| export default class CustomStyle extends Mark { | |||||
| constructor(type){ | |||||
| super(); | |||||
| this.customType = type; | |||||
| } | |||||
| get name() { | |||||
| return this.customType; | |||||
| } | |||||
| get schema() { | |||||
| return { | |||||
| attrs: { | |||||
| type: { | |||||
| default: "" | |||||
| } | |||||
| }, | |||||
| parseDOM: [ | |||||
| { | |||||
| tag: "span[data-type="+this.customType+"]", | |||||
| getAttrs(dom) { | |||||
| return {type: dom.dataset.type}; | |||||
| } | |||||
| } | |||||
| ], | |||||
| toDOM: () => { | |||||
| return ["span", {'data-type': this.customType}, 0]; | |||||
| } | |||||
| }; | |||||
| } | |||||
| commands({type}) { | |||||
| return attrs => { return toggleMark(type, attrs);} | |||||
| } | |||||
| } | |||||