Grammalecte  Hex Artifact Content

Artifact 6855746abd787a3808c351232c7ee6fed570fcae0ff9ca9f877c49f940f64d25:


0000: 2f 2f 20 4d 6f 64 69 66 79 20 70 61 67 65 0a 0a  // Modify page..
0010: 2f 2a 20 6a 73 68 69 6e 74 20 65 73 76 65 72 73  /* jshint esvers
0020: 69 6f 6e 3a 36 2c 20 2d 57 30 39 37 20 2a 2f 0a  ion:6, -W097 */.
0030: 2f 2a 20 6a 73 6c 69 6e 74 20 65 73 76 65 72 73  /* jslint esvers
0040: 69 6f 6e 3a 36 20 2a 2f 0a 2f 2a 20 67 6c 6f 62  ion:6 */./* glob
0050: 61 6c 20 47 72 61 6d 6d 61 6c 65 63 74 65 50 61  al GrammalectePa
0060: 6e 65 6c 2c 20 47 72 61 6d 6d 61 6c 65 63 74 65  nel, Grammalecte
0070: 4d 65 6e 75 2c 20 47 72 61 6d 6d 61 6c 65 63 74  Menu, Grammalect
0080: 65 54 65 78 74 46 6f 72 6d 61 74 74 65 72 2c 20  eTextFormatter, 
0090: 47 72 61 6d 6d 61 6c 65 63 74 65 4c 65 78 69 63  GrammalecteLexic
00a0: 6f 67 72 61 70 68 65 72 2c 20 47 72 61 6d 6d 61  ographer, Gramma
00b0: 6c 65 63 74 65 47 72 61 6d 6d 61 72 43 68 65 63  lecteGrammarChec
00c0: 6b 65 72 2c 20 47 72 61 6d 6d 61 6c 65 63 74 65  ker, Grammalecte
00d0: 4d 65 73 73 61 67 65 42 6f 78 2c 20 73 68 6f 77  MessageBox, show
00e0: 45 72 72 6f 72 2c 20 4d 75 74 61 74 69 6f 6e 4f  Error, MutationO
00f0: 62 73 65 72 76 65 72 2c 20 63 68 72 6f 6d 65 2c  bserver, chrome,
0100: 20 64 6f 63 75 6d 65 6e 74 2c 20 63 6f 6e 73 6f   document, conso
0110: 6c 65 20 2a 2f 0a 0a 2f 2a 0a 20 20 20 20 4a 53  le */../*.    JS
0120: 20 73 75 63 6b 73 20 28 61 67 61 69 6e 2c 20 61   sucks (again, a
0130: 6e 64 20 61 67 61 69 6e 2c 20 61 6e 64 20 61 67  nd again, and ag
0140: 61 69 6e 2c 20 61 6e 64 20 61 67 61 69 6e e2 80  ain, and again..
0150: a6 29 0a 20 20 20 20 4e 6f 74 20 70 6f 73 73 69  .).    Not possi
0160: 62 6c 65 20 74 6f 20 6c 6f 61 64 20 63 6f 6e 74  ble to load cont
0170: 65 6e 74 20 66 72 6f 6d 20 77 69 74 68 69 6e 20  ent from within 
0180: 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 3a 0a 20  the extension:. 
0190: 20 20 20 68 74 74 70 73 3a 2f 2f 62 75 67 7a 69     https://bugzi
01a0: 6c 6c 61 2e 6d 6f 7a 69 6c 6c 61 2e 6f 72 67 2f  lla.mozilla.org/
01b0: 73 68 6f 77 5f 62 75 67 2e 63 67 69 3f 69 64 3d  show_bug.cgi?id=
01c0: 31 32 36 37 30 32 37 0a 20 20 20 20 4e 6f 20 53  1267027.    No S
01d0: 68 61 72 65 64 57 6f 72 6b 65 72 2c 20 6e 6f 20  haredWorker, no 
01e0: 69 6d 61 67 65 73 20 61 6c 6c 6f 77 65 64 20 66  images allowed f
01f0: 6f 72 20 6e 6f 77 e2 80 a6 0a 2a 2f 0a 0a 22 75  or now....*/.."u
0200: 73 65 20 73 74 72 69 63 74 22 3b 0a 0a 66 75 6e  se strict";..fun
0210: 63 74 69 6f 6e 20 73 68 6f 77 45 72 72 6f 72 20  ction showError 
0220: 28 65 29 20 7b 0a 20 20 20 20 2f 2f 20 63 6f 6e  (e) {.    // con
0230: 73 6f 6c 65 20 63 61 6e e2 80 99 74 20 64 69 73  sole can...t dis
0240: 70 6c 61 79 20 65 72 72 6f 72 20 6f 62 6a 65 63  play error objec
0250: 74 73 20 66 72 6f 6d 20 63 6f 6e 74 65 6e 74 20  ts from content 
0260: 73 63 72 69 70 74 73 0a 20 20 20 20 63 6f 6e 73  scripts.    cons
0270: 6f 6c 65 2e 65 72 72 6f 72 28 65 2e 66 69 6c 65  ole.error(e.file
0280: 4e 61 6d 65 20 2b 20 22 5c 6e 22 20 2b 20 65 2e  Name + "\n" + e.
0290: 6e 61 6d 65 20 2b 20 22 5c 6e 6c 69 6e 65 3a 20  name + "\nline: 
02a0: 22 20 2b 20 65 2e 6c 69 6e 65 4e 75 6d 62 65 72  " + e.lineNumber
02b0: 20 2b 20 22 5c 6e 22 20 2b 20 65 2e 6d 65 73 73   + "\n" + e.mess
02c0: 61 67 65 29 3b 0a 7d 0a 0a 2f 2f 20 43 68 72 6f  age);.}..// Chro
02d0: 6d 65 20 64 6f 6e e2 80 99 74 20 66 6f 6c 6c 6f  me don...t follo
02e0: 77 20 74 68 65 20 57 33 43 20 73 70 65 63 69 66  w the W3C specif
02f0: 69 63 61 74 69 6f 6e 3a 0a 2f 2f 20 68 74 74 70  ication:.// http
0300: 73 3a 2f 2f 62 72 6f 77 73 65 72 65 78 74 2e 67  s://browserext.g
0310: 69 74 68 75 62 2e 69 6f 2f 62 72 6f 77 73 65 72  ithub.io/browser
0320: 65 78 74 2f 0a 6c 65 74 20 62 43 68 72 6f 6d 65  ext/.let bChrome
0330: 20 3d 20 66 61 6c 73 65 3b 0a 69 66 20 28 74 79   = false;.if (ty
0340: 70 65 6f 66 20 62 72 6f 77 73 65 72 20 21 3d 3d  peof browser !==
0350: 20 22 6f 62 6a 65 63 74 22 29 20 7b 0a 20 20 20   "object") {.   
0360: 20 76 61 72 20 62 72 6f 77 73 65 72 20 3d 20 63   var browser = c
0370: 68 72 6f 6d 65 3b 0a 20 20 20 20 62 43 68 72 6f  hrome;.    bChro
0380: 6d 65 20 3d 20 74 72 75 65 3b 0a 7d 0a 0a 2f 2a  me = true;.}../*
0390: 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f 61 64 49 6d  .function loadIm
03a0: 61 67 65 20 28 73 43 6f 6e 74 61 69 6e 65 72 43  age (sContainerC
03b0: 6c 61 73 73 2c 20 73 49 6d 61 67 65 50 61 74 68  lass, sImagePath
03c0: 29 20 7b 0a 20 20 20 20 6c 65 74 20 78 52 65 71  ) {.    let xReq
03d0: 75 65 73 74 20 3d 20 6e 65 77 20 58 4d 4c 48 74  uest = new XMLHt
03e0: 74 70 52 65 71 75 65 73 74 28 29 3b 0a 20 20 20  tpRequest();.   
03f0: 20 78 52 65 71 75 65 73 74 2e 6f 70 65 6e 28 27   xRequest.open('
0400: 47 45 54 27 2c 20 62 72 6f 77 73 65 72 2e 65 78  GET', browser.ex
0410: 74 65 6e 73 69 6f 6e 2e 67 65 74 55 52 4c 28 22  tension.getURL("
0420: 22 29 2b 73 49 6d 61 67 65 50 61 74 68 2c 20 66  ")+sImagePath, f
0430: 61 6c 73 65 29 3b 0a 20 20 20 20 78 52 65 71 75  alse);.    xRequ
0440: 65 73 74 2e 72 65 73 70 6f 6e 73 65 54 79 70 65  est.responseType
0450: 20 3d 20 22 61 72 72 61 79 62 75 66 66 65 72 22   = "arraybuffer"
0460: 3b 0a 20 20 20 20 78 52 65 71 75 65 73 74 2e 73  ;.    xRequest.s
0470: 65 6e 64 28 29 3b 0a 20 20 20 20 6c 65 74 20 62  end();.    let b
0480: 6c 6f 62 54 78 74 20 3d 20 6e 65 77 20 42 6c 6f  lobTxt = new Blo
0490: 62 28 5b 78 52 65 71 75 65 73 74 2e 72 65 73 70  b([xRequest.resp
04a0: 6f 6e 73 65 5d 2c 20 7b 74 79 70 65 3a 20 27 69  onse], {type: 'i
04b0: 6d 61 67 65 2f 70 6e 67 27 7d 29 3b 0a 20 20 20  mage/png'});.   
04c0: 20 6c 65 74 20 69 6d 67 20 3d 20 64 6f 63 75 6d   let img = docum
04d0: 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e  ent.createElemen
04e0: 74 28 27 69 6d 67 27 29 3b 0a 20 20 20 20 69 6d  t('img');.    im
04f0: 67 2e 73 72 63 20 3d 20 28 55 52 4c 20 7c 7c 20  g.src = (URL || 
0500: 77 65 62 6b 69 74 55 52 4c 29 2e 63 72 65 61 74  webkitURL).creat
0510: 65 4f 62 6a 65 63 74 55 52 4c 28 62 6c 6f 62 54  eObjectURL(blobT
0520: 78 74 29 3b 20 2f 2f 20 77 65 62 6b 69 74 55 52  xt); // webkitUR
0530: 4c 20 69 73 20 6f 62 73 6f 6c 65 74 65 3a 20 68  L is obsolete: h
0540: 74 74 70 73 3a 2f 2f 62 75 67 73 2e 77 65 62 6b  ttps://bugs.webk
0550: 69 74 2e 6f 72 67 2f 73 68 6f 77 5f 62 75 67 2e  it.org/show_bug.
0560: 63 67 69 3f 69 64 3d 31 36 37 35 31 38 0a 20 20  cgi?id=167518.  
0570: 20 20 41 72 72 61 79 2e 66 69 6c 74 65 72 28 64    Array.filter(d
0580: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
0590: 6e 74 73 42 79 43 6c 61 73 73 4e 61 6d 65 28 73  ntsByClassName(s
05a0: 43 6f 6e 74 61 69 6e 65 72 43 6c 61 73 73 29 2c  ContainerClass),
05b0: 20 66 75 6e 63 74 69 6f 6e 20 28 6f 45 6c 65 6d   function (oElem
05c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 6f 45 6c 65  ) {.        oEle
05d0: 6d 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 69 6d  m.appendChild(im
05e0: 67 29 3b 0a 20 20 20 20 7d 29 3b 0a 7d 0a 2a 2f  g);.    });.}.*/
05f0: 0a 0a 6c 65 74 20 6f 54 69 6e 79 41 64 64 20 3d  ..let oTinyAdd =
0600: 20 7b 7d 3b 0a 0a 63 6f 6e 73 74 20 6f 47 72 61   {};..const oGra
0610: 6d 6d 61 6c 65 63 74 65 20 3d 20 7b 0a 20 20 20  mmalecte = {.   
0620: 20 6e 4d 65 6e 75 3a 20 30 2c 0a 20 20 20 20 6c   nMenu: 0,.    l
0630: 4d 65 6e 75 3a 20 5b 5d 2c 0a 0a 20 20 20 20 6f  Menu: [],..    o
0640: 54 46 50 61 6e 65 6c 3a 20 6e 75 6c 6c 2c 0a 20  TFPanel: null,. 
0650: 20 20 20 6f 4c 78 67 50 61 6e 65 6c 3a 20 6e 75     oLxgPanel: nu
0660: 6c 6c 2c 0a 20 20 20 20 6f 47 43 50 61 6e 65 6c  ll,.    oGCPanel
0670: 3a 20 6e 75 6c 6c 2c 0a 0a 20 20 20 20 6f 4d 65  : null,..    oMe
0680: 73 73 61 67 65 42 6f 78 3a 20 6e 75 6c 6c 2c 0a  ssageBox: null,.
0690: 0a 20 20 20 20 78 52 69 67 68 74 43 6c 69 63 6b  .    xRightClick
06a0: 65 64 4e 6f 64 65 3a 20 6e 75 6c 6c 2c 0a 0a 20  edNode: null,.. 
06b0: 20 20 20 78 4f 62 73 65 72 76 65 72 3a 20 6e 75     xObserver: nu
06c0: 6c 6c 2c 0a 0a 20 20 20 20 73 45 78 74 65 6e 73  ll,..    sExtens
06d0: 69 6f 6e 55 72 6c 3a 20 6e 75 6c 6c 2c 0a 0a 20  ionUrl: null,.. 
06e0: 20 20 20 6c 69 73 74 65 6e 52 69 67 68 74 43 6c     listenRightCl
06f0: 69 63 6b 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29  ick: function ()
0700: 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f   {.        // No
0710: 64 65 20 77 68 65 72 65 20 61 20 72 69 67 68 74  de where a right
0720: 20 63 6c 69 63 6b 20 69 73 20 64 6f 6e 65 0a 20   click is done. 
0730: 20 20 20 20 20 20 20 2f 2f 20 42 75 67 20 72 65         // Bug re
0740: 70 6f 72 74 3a 20 68 74 74 70 73 3a 2f 2f 62 75  port: https://bu
0750: 67 7a 69 6c 6c 61 2e 6d 6f 7a 69 6c 6c 61 2e 6f  gzilla.mozilla.o
0760: 72 67 2f 73 68 6f 77 5f 62 75 67 2e 63 67 69 3f  rg/show_bug.cgi?
0770: 69 64 3d 31 33 32 35 38 31 34 0a 20 20 20 20 20  id=1325814.     
0780: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 61 64 64 45     document.addE
0790: 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63 6f  ventListener("co
07a0: 6e 74 65 78 74 6d 65 6e 75 22 2c 20 66 75 6e 63  ntextmenu", func
07b0: 74 69 6f 6e 20 28 78 45 76 65 6e 74 29 20 7b 0a  tion (xEvent) {.
07c0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
07d0: 2e 78 52 69 67 68 74 43 6c 69 63 6b 65 64 4e 6f  .xRightClickedNo
07e0: 64 65 20 3d 20 78 45 76 65 6e 74 2e 74 61 72 67  de = xEvent.targ
07f0: 65 74 3b 0a 20 20 20 20 20 20 20 20 7d 2e 62 69  et;.        }.bi
0800: 6e 64 28 74 68 69 73 29 2c 20 74 72 75 65 29 3b  nd(this), true);
0810: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 6c 65  .    },..    cle
0820: 61 72 52 69 67 68 74 43 6c 69 63 6b 65 64 4e 6f  arRightClickedNo
0830: 64 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20  de: function () 
0840: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 78  {.        this.x
0850: 52 69 67 68 74 43 6c 69 63 6b 65 64 4e 6f 64 65  RightClickedNode
0860: 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 7d 2c 0a   = null;.    },.
0870: 0a 20 20 20 20 63 72 65 61 74 65 4d 65 6e 75 73  .    createMenus
0880: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  : function () {.
0890: 20 20 20 20 20 20 20 20 69 66 20 28 62 43 68 72          if (bChr
08a0: 6f 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ome) {.         
08b0: 20 20 20 62 72 6f 77 73 65 72 2e 73 74 6f 72 61     browser.stora
08c0: 67 65 2e 6c 6f 63 61 6c 2e 67 65 74 28 22 75 69  ge.local.get("ui
08d0: 5f 6f 70 74 69 6f 6e 73 22 2c 20 74 68 69 73 2e  _options", this.
08e0: 5f 63 72 65 61 74 65 4d 65 6e 75 73 2e 62 69 6e  _createMenus.bin
08f0: 64 28 74 68 69 73 29 29 3b 0a 20 20 20 20 20 20  d(this));.      
0900: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a 20 20        return;.  
0910: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
0920: 62 72 6f 77 73 65 72 2e 73 74 6f 72 61 67 65 2e  browser.storage.
0930: 6c 6f 63 61 6c 2e 67 65 74 28 22 75 69 5f 6f 70  local.get("ui_op
0940: 74 69 6f 6e 73 22 29 2e 74 68 65 6e 28 74 68 69  tions").then(thi
0950: 73 2e 5f 63 72 65 61 74 65 4d 65 6e 75 73 2e 62  s._createMenus.b
0960: 69 6e 64 28 74 68 69 73 29 2c 20 73 68 6f 77 45  ind(this), showE
0970: 72 72 6f 72 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20  rror);.    },.. 
0980: 20 20 20 5f 63 72 65 61 74 65 4d 65 6e 75 73 3a     _createMenus:
0990: 20 66 75 6e 63 74 69 6f 6e 20 28 64 4f 70 74 69   function (dOpti
09a0: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69  ons) {.        i
09b0: 66 20 28 64 4f 70 74 69 6f 6e 73 2e 68 61 73 4f  f (dOptions.hasO
09c0: 77 6e 50 72 6f 70 65 72 74 79 28 22 75 69 5f 6f  wnProperty("ui_o
09d0: 70 74 69 6f 6e 73 22 29 29 20 7b 0a 20 20 20 20  ptions")) {.    
09e0: 20 20 20 20 20 20 20 20 64 4f 70 74 69 6f 6e 73          dOptions
09f0: 20 3d 20 64 4f 70 74 69 6f 6e 73 2e 75 69 5f 6f   = dOptions.ui_o
0a00: 70 74 69 6f 6e 73 3b 0a 20 20 20 20 20 20 20 20  ptions;.        
0a10: 20 20 20 20 69 66 20 28 64 4f 70 74 69 6f 6e 73      if (dOptions
0a20: 2e 74 65 78 74 61 72 65 61 29 20 7b 0a 20 20 20  .textarea) {.   
0a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
0a40: 20 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20 64   (let xNode of d
0a50: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
0a60: 6e 74 73 42 79 54 61 67 4e 61 6d 65 28 22 74 65  ntsByTagName("te
0a70: 78 74 61 72 65 61 22 29 29 20 7b 0a 20 20 20 20  xtarea")) {.    
0a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a90: 69 66 20 28 78 4e 6f 64 65 2e 73 74 79 6c 65 2e  if (xNode.style.
0aa0: 64 69 73 70 6c 61 79 20 21 3d 3d 20 22 6e 6f 6e  display !== "non
0ab0: 65 22 20 26 26 20 78 4e 6f 64 65 2e 73 74 79 6c  e" && xNode.styl
0ac0: 65 2e 76 69 73 69 62 69 6c 69 74 79 20 21 3d 3d  e.visibility !==
0ad0: 20 22 68 69 64 64 65 6e 22 20 26 26 20 78 4e 6f   "hidden" && xNo
0ae0: 64 65 2e 67 65 74 41 74 74 72 69 62 75 74 65 28  de.getAttribute(
0af0: 22 73 70 65 6c 6c 63 68 65 63 6b 22 29 20 21 3d  "spellcheck") !=
0b00: 3d 20 22 66 61 6c 73 65 22 29 20 7b 0a 20 20 20  = "false") {.   
0b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b20: 20 20 20 20 20 74 68 69 73 2e 6c 4d 65 6e 75 2e       this.lMenu.
0b30: 70 75 73 68 28 6e 65 77 20 47 72 61 6d 6d 61 6c  push(new Grammal
0b40: 65 63 74 65 4d 65 6e 75 28 74 68 69 73 2e 6e 4d  ecteMenu(this.nM
0b50: 65 6e 75 2c 20 78 4e 6f 64 65 29 29 3b 0a 20 20  enu, xNode));.  
0b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b70: 20 20 20 20 20 20 74 68 69 73 2e 6e 4d 65 6e 75        this.nMenu
0b80: 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20   += 1;.         
0b90: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
0bb0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
0bc0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 4f 70           if (dOp
0bd0: 74 69 6f 6e 73 2e 65 64 69 74 61 62 6c 65 6e 6f  tions.editableno
0be0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  de) {.          
0bf0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 78        for (let x
0c00: 4e 6f 64 65 20 6f 66 20 64 6f 63 75 6d 65 6e 74  Node of document
0c10: 2e 71 75 65 72 79 53 65 6c 65 63 74 6f 72 41 6c  .querySelectorAl
0c20: 6c 28 22 5b 63 6f 6e 74 65 6e 74 65 64 69 74 61  l("[contentedita
0c30: 62 6c 65 5d 22 29 29 20 7b 0a 20 20 20 20 20 20  ble]")) {.      
0c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
0c50: 69 73 2e 6c 4d 65 6e 75 2e 70 75 73 68 28 6e 65  is.lMenu.push(ne
0c60: 77 20 47 72 61 6d 6d 61 6c 65 63 74 65 4d 65 6e  w GrammalecteMen
0c70: 75 28 74 68 69 73 2e 6e 4d 65 6e 75 2c 20 78 4e  u(this.nMenu, xN
0c80: 6f 64 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20  ode));.         
0c90: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
0ca0: 6e 4d 65 6e 75 20 2b 3d 20 31 3b 0a 20 20 20 20  nMenu += 1;.    
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
0cc0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
0cd0: 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20      }.    },..  
0ce0: 20 20 6f 62 73 65 72 76 65 50 61 67 65 3a 20 66    observePage: f
0cf0: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20  unction () {.   
0d00: 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 20 20       /*.        
0d10: 20 20 20 20 57 68 65 6e 20 61 20 74 65 78 74 61      When a texta
0d20: 72 65 61 20 69 73 20 61 64 64 65 64 20 76 69 61  rea is added via
0d30: 20 6a 61 73 63 72 69 70 74 20 77 65 20 61 64 64   jascript we add
0d40: 20 74 68 65 20 6d 65 6e 75 20 3a 29 0a 20 20 20   the menu :).   
0d50: 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 20 20       */.        
0d60: 66 75 6e 63 74 69 6f 6e 20 4e 6f 64 65 54 69 6e  function NodeTin
0d70: 79 4d 43 45 20 28 78 4e 6f 64 65 29 20 7b 0a 20  yMCE (xNode) {. 
0d80: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 70             let p
0d90: 61 72 65 6e 74 4e 6f 64 65 20 3d 20 78 4e 6f 64  arentNode = xNod
0da0: 65 2e 70 61 72 65 6e 74 4e 6f 64 65 3b 20 2f 2f  e.parentNode; //
0db0: 6d 75 74 61 74 69 6f 6e 2e 74 61 72 67 65 74 0a  mutation.target.
0dc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
0dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0de0: 20 74 79 70 65 6f 66 20 78 4e 6f 64 65 20 21 3d   typeof xNode !=
0df0: 3d 20 22 75 6e 64 65 66 69 6e 65 64 22 20 26 26  = "undefined" &&
0e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0e10: 20 74 79 70 65 6f 66 20 78 4e 6f 64 65 2e 69 64   typeof xNode.id
0e20: 20 21 3d 3d 20 22 75 6e 64 65 66 69 6e 65 64 22   !== "undefined"
0e30: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20   &&.            
0e40: 20 20 20 20 74 79 70 65 6f 66 20 6f 54 69 6e 79      typeof oTiny
0e50: 41 64 64 5b 78 4e 6f 64 65 2e 69 64 5d 20 3d 3d  Add[xNode.id] ==
0e60: 3d 20 22 75 6e 64 65 66 69 6e 65 64 22 20 26 26  = "undefined" &&
0e70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0e80: 20 28 70 61 72 65 6e 74 4e 6f 64 65 2e 63 6c 61   (parentNode.cla
0e90: 73 73 4c 69 73 74 2e 63 6f 6e 74 61 69 6e 73 28  ssList.contains(
0ea0: 22 6d 63 65 2d 65 64 69 74 2d 61 72 65 61 22 29  "mce-edit-area")
0eb0: 20 7c 7c 20 70 61 72 65 6e 74 4e 6f 64 65 2e 63   || parentNode.c
0ec0: 6c 61 73 73 4c 69 73 74 2e 63 6f 6e 74 61 69 6e  lassList.contain
0ed0: 73 28 22 6d 63 65 49 66 72 61 6d 65 43 6f 6e 74  s("mceIframeCont
0ee0: 61 69 6e 65 72 22 29 29 0a 20 20 20 20 20 20 20  ainer")).       
0ef0: 20 20 20 20 20 29 20 7b 0a 20 20 20 20 20 20 20       ) {.       
0f00: 20 20 20 20 20 20 20 20 20 2f 2f 63 6f 6e 73 6f           //conso
0f10: 6c 65 2e 6c 6f 67 28 6f 54 69 6e 79 41 64 64 2c  le.log(oTinyAdd,
0f20: 20 78 4e 6f 64 65 2c 20 70 61 72 65 6e 74 4e 6f   xNode, parentNo
0f30: 64 65 2c 20 70 61 72 65 6e 74 4e 6f 64 65 2e 63  de, parentNode.c
0f40: 6c 61 73 73 4c 69 73 74 29 3b 0a 20 20 20 20 20  lassList);.     
0f50: 20 20 20 20 20 20 20 20 20 20 20 6f 54 69 6e 79             oTiny
0f60: 41 64 64 5b 78 4e 6f 64 65 2e 69 64 5d 20 3d 20  Add[xNode.id] = 
0f70: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20  true;.          
0f80: 20 20 20 20 20 20 73 65 6e 64 54 6f 57 65 62 70        sendToWebp
0f90: 61 67 65 28 7b 20 74 69 6e 79 3a 20 78 4e 6f 64  age({ tiny: xNod
0fa0: 65 2e 69 64 2e 72 65 70 6c 61 63 65 28 22 5f 69  e.id.replace("_i
0fb0: 66 72 22 2c 20 22 22 29 20 7d 29 3b 0a 20 20 20  fr", "") });.   
0fc0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
0fd0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 74 68 69     }.        thi
0fe0: 73 2e 78 4f 62 73 65 72 76 65 72 20 3d 20 6e 65  s.xObserver = ne
0ff0: 77 20 4d 75 74 61 74 69 6f 6e 4f 62 73 65 72 76  w MutationObserv
1000: 65 72 28 66 75 6e 63 74 69 6f 6e 20 28 6d 75 74  er(function (mut
1010: 61 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20  ations) {.      
1020: 20 20 20 20 20 20 6d 75 74 61 74 69 6f 6e 73 2e        mutations.
1030: 66 6f 72 45 61 63 68 28 66 75 6e 63 74 69 6f 6e  forEach(function
1040: 20 28 6d 75 74 61 74 69 6f 6e 29 20 7b 0a 20 20   (mutation) {.  
1050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
1060: 72 20 28 6c 65 74 20 69 20 3d 20 30 3b 20 69 20  r (let i = 0; i 
1070: 3c 20 6d 75 74 61 74 69 6f 6e 2e 61 64 64 65 64  < mutation.added
1080: 4e 6f 64 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b  Nodes.length; i+
1090: 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  +) {.           
10a0: 20 20 20 20 20 20 20 20 20 6c 65 74 20 4d 75 74           let Mut
10b0: 61 74 69 6f 6e 4e 6f 64 65 20 3d 20 6d 75 74 61  ationNode = muta
10c0: 74 69 6f 6e 2e 61 64 64 65 64 4e 6f 64 65 73 5b  tion.addedNodes[
10d0: 69 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  i];.            
10e0: 20 20 20 20 20 20 20 20 6c 65 74 20 74 61 67 4e          let tagN
10f0: 61 6d 65 20 3d 20 4d 75 74 61 74 69 6f 6e 4e 6f  ame = MutationNo
1100: 64 65 2e 74 61 67 4e 61 6d 65 3b 0a 0a 20 20 20  de.tagName;..   
1110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1120: 20 69 66 20 28 74 61 67 4e 61 6d 65 20 3d 3d 20   if (tagName == 
1130: 22 54 45 58 54 41 52 45 41 22 29 20 7b 0a 20 20  "TEXTAREA") {.  
1140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1150: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
1160: 74 65 2e 6c 4d 65 6e 75 2e 70 75 73 68 28 6e 65  te.lMenu.push(ne
1170: 77 20 47 72 61 6d 6d 61 6c 65 63 74 65 4d 65 6e  w GrammalecteMen
1180: 75 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6e  u(oGrammalecte.n
1190: 4d 65 6e 75 2c 20 4d 75 74 61 74 69 6f 6e 4e 6f  Menu, MutationNo
11a0: 64 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  de));.          
11b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 47                oG
11c0: 72 61 6d 6d 61 6c 65 63 74 65 2e 6e 4d 65 6e 75  rammalecte.nMenu
11d0: 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20   += 1;.         
11e0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
11f0: 65 20 69 66 20 28 74 61 67 4e 61 6d 65 20 3d 3d  e if (tagName ==
1200: 20 22 49 46 52 41 4d 45 22 29 20 7b 0a 20 20 20   "IFRAME") {.   
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1220: 20 20 20 20 20 4e 6f 64 65 54 69 6e 79 4d 43 45       NodeTinyMCE
1230: 28 4d 75 74 61 74 69 6f 6e 4e 6f 64 65 29 3b 0a  (MutationNode);.
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1250: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 28      } else if ((
1260: 74 61 67 4e 61 6d 65 20 3d 3d 20 22 44 49 56 22  tagName == "DIV"
1270: 20 7c 7c 20 74 61 67 4e 61 6d 65 20 3d 3d 20 22   || tagName == "
1280: 53 50 41 4e 22 29 20 26 26 20 4d 75 74 61 74 69  SPAN") && Mutati
1290: 6f 6e 4e 6f 64 65 2e 68 61 73 41 74 74 72 69 62  onNode.hasAttrib
12a0: 75 74 65 20 26 26 20 4d 75 74 61 74 69 6f 6e 4e  ute && MutationN
12b0: 6f 64 65 2e 68 61 73 41 74 74 72 69 62 75 74 65  ode.hasAttribute
12c0: 28 22 63 6f 6e 74 65 6e 74 65 64 69 74 61 62 6c  ("contenteditabl
12d0: 65 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  e")) {.         
12e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
12f0: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6c 4d 65 6e  Grammalecte.lMen
1300: 75 2e 70 75 73 68 28 6e 65 77 20 47 72 61 6d 6d  u.push(new Gramm
1310: 61 6c 65 63 74 65 4d 65 6e 75 28 6f 47 72 61 6d  alecteMenu(oGram
1320: 6d 61 6c 65 63 74 65 2e 6e 4d 65 6e 75 2c 20 4d  malecte.nMenu, M
1330: 75 74 61 74 69 6f 6e 4e 6f 64 65 29 29 3b 0a 20  utationNode));. 
1340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1350: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
1360: 63 74 65 2e 6e 4d 65 6e 75 20 2b 3d 20 31 3b 0a  cte.nMenu += 1;.
1370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1380: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 4d      } else if (M
1390: 75 74 61 74 69 6f 6e 4e 6f 64 65 2e 67 65 74 45  utationNode.getE
13a0: 6c 65 6d 65 6e 74 73 42 79 54 61 67 4e 61 6d 65  lementsByTagName
13b0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
13d0: 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20 4d 75  (let xNode of Mu
13e0: 74 61 74 69 6f 6e 4e 6f 64 65 2e 67 65 74 45 6c  tationNode.getEl
13f0: 65 6d 65 6e 74 73 42 79 54 61 67 4e 61 6d 65 28  ementsByTagName(
1400: 22 74 65 78 74 61 72 65 61 22 29 29 20 7b 0a 20  "textarea")) {. 
1410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1420: 20 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d             oGram
1430: 6d 61 6c 65 63 74 65 2e 6c 4d 65 6e 75 2e 70 75  malecte.lMenu.pu
1440: 73 68 28 6e 65 77 20 47 72 61 6d 6d 61 6c 65 63  sh(new Grammalec
1450: 74 65 4d 65 6e 75 28 6f 47 72 61 6d 6d 61 6c 65  teMenu(oGrammale
1460: 63 74 65 2e 6e 4d 65 6e 75 2c 20 78 4e 6f 64 65  cte.nMenu, xNode
1470: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ));.            
1480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1490: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6e 4d 65  oGrammalecte.nMe
14a0: 6e 75 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20  nu += 1;.       
14b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
14d0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
14e0: 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20 4d 75 74  let xNode of Mut
14f0: 61 74 69 6f 6e 4e 6f 64 65 2e 67 65 74 45 6c 65  ationNode.getEle
1500: 6d 65 6e 74 73 42 79 54 61 67 4e 61 6d 65 28 22  mentsByTagName("
1510: 64 69 76 22 29 29 20 7b 0a 20 20 20 20 20 20 20  div")) {.       
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1530: 20 20 20 20 20 69 66 20 28 78 4e 6f 64 65 2e 68       if (xNode.h
1540: 61 73 41 74 74 72 69 62 75 74 65 20 26 26 20 78  asAttribute && x
1550: 4e 6f 64 65 2e 68 61 73 41 74 74 72 69 62 75 74  Node.hasAttribut
1560: 65 28 22 63 6f 6e 74 65 6e 74 65 64 69 74 61 62  e("contenteditab
1570: 6c 65 22 29 29 7b 0a 20 20 20 20 20 20 20 20 20  le")){.         
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1590: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
15a0: 63 74 65 2e 6c 4d 65 6e 75 2e 70 75 73 68 28 6e  cte.lMenu.push(n
15b0: 65 77 20 47 72 61 6d 6d 61 6c 65 63 74 65 4d 65  ew GrammalecteMe
15c0: 6e 75 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e  nu(oGrammalecte.
15d0: 6e 4d 65 6e 75 2c 20 78 4e 6f 64 65 29 29 3b 0a  nMenu, xNode));.
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1600: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6e 4d 65  oGrammalecte.nMe
1610: 6e 75 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20  nu += 1;.       
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1630: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
1640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1660: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65           for (le
1670: 74 20 78 4e 6f 64 65 20 6f 66 20 4d 75 74 61 74  t xNode of Mutat
1680: 69 6f 6e 4e 6f 64 65 2e 67 65 74 45 6c 65 6d 65  ionNode.getEleme
1690: 6e 74 73 42 79 54 61 67 4e 61 6d 65 28 22 73 70  ntsByTagName("sp
16a0: 61 6e 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  an")) {.        
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c0: 20 20 20 20 69 66 20 28 78 4e 6f 64 65 2e 68 61      if (xNode.ha
16d0: 73 41 74 74 72 69 62 75 74 65 20 26 26 20 78 4e  sAttribute && xN
16e0: 6f 64 65 2e 68 61 73 41 74 74 72 69 62 75 74 65  ode.hasAttribute
16f0: 28 22 63 6f 6e 74 65 6e 74 65 64 69 74 61 62 6c  ("contenteditabl
1700: 65 22 29 29 7b 0a 20 20 20 20 20 20 20 20 20 20  e")){.          
1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1720: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
1730: 74 65 2e 6c 4d 65 6e 75 2e 70 75 73 68 28 6e 65  te.lMenu.push(ne
1740: 77 20 47 72 61 6d 6d 61 6c 65 63 74 65 4d 65 6e  w GrammalecteMen
1750: 75 28 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6e  u(oGrammalecte.n
1760: 4d 65 6e 75 2c 20 78 4e 6f 64 65 29 29 3b 0a 20  Menu, xNode));. 
1770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
1790: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6e 4d 65 6e  Grammalecte.nMen
17a0: 75 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20  u += 1;.        
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
17d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
17e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17f0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74          for (let
1800: 20 78 4e 6f 64 65 20 6f 66 20 4d 75 74 61 74 69   xNode of Mutati
1810: 6f 6e 4e 6f 64 65 2e 67 65 74 45 6c 65 6d 65 6e  onNode.getElemen
1820: 74 73 42 79 54 61 67 4e 61 6d 65 28 22 69 66 72  tsByTagName("ifr
1830: 61 6d 65 22 29 29 20 7b 0a 20 20 20 20 20 20 20  ame")) {.       
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1850: 20 20 20 20 20 4e 6f 64 65 54 69 6e 79 4d 43 45       NodeTinyMCE
1860: 28 78 4e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20  (xNode);.       
1870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1880: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
1890: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
18a0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
18b0: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20         });.     
18c0: 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 74     });.        t
18d0: 68 69 73 2e 78 4f 62 73 65 72 76 65 72 2e 6f 62  his.xObserver.ob
18e0: 73 65 72 76 65 28 64 6f 63 75 6d 65 6e 74 2e 62  serve(document.b
18f0: 6f 64 79 2c 20 7b 0a 20 20 20 20 20 20 20 20 20  ody, {.         
1900: 20 20 20 63 68 69 6c 64 4c 69 73 74 3a 20 74 72     childList: tr
1910: 75 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue,.            
1920: 73 75 62 74 72 65 65 3a 20 74 72 75 65 0a 20 20  subtree: true.  
1930: 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 2c        });.    },
1940: 0a 0a 20 20 20 20 72 65 73 63 61 6e 50 61 67 65  ..    rescanPage
1950: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  : function () {.
1960: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
1970: 2e 6f 54 46 50 61 6e 65 6c 20 21 3d 3d 20 6e 75  .oTFPanel !== nu
1980: 6c 6c 29 20 7b 20 74 68 69 73 2e 6f 54 46 50 61  ll) { this.oTFPa
1990: 6e 65 6c 2e 68 69 64 65 28 29 3b 20 7d 0a 20 20  nel.hide(); }.  
19a0: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6f        if (this.o
19b0: 4c 78 67 50 61 6e 65 6c 20 21 3d 3d 20 6e 75 6c  LxgPanel !== nul
19c0: 6c 29 20 7b 20 74 68 69 73 2e 6f 4c 78 67 50 61  l) { this.oLxgPa
19d0: 6e 65 6c 2e 68 69 64 65 28 29 3b 20 7d 0a 20 20  nel.hide(); }.  
19e0: 20 20 20 20 20 20 69 66 20 28 74 68 69 73 2e 6f        if (this.o
19f0: 47 43 50 61 6e 65 6c 20 21 3d 3d 20 6e 75 6c 6c  GCPanel !== null
1a00: 29 20 7b 20 74 68 69 73 2e 6f 47 43 50 61 6e 65  ) { this.oGCPane
1a10: 6c 2e 68 69 64 65 28 29 3b 20 7d 0a 20 20 20 20  l.hide(); }.    
1a20: 20 20 20 20 66 6f 72 20 28 6c 65 74 20 6f 4d 65      for (let oMe
1a30: 6e 75 20 6f 66 20 74 68 69 73 2e 6c 4d 65 6e 75  nu of this.lMenu
1a40: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1a50: 6f 4d 65 6e 75 2e 64 65 6c 65 74 65 4e 6f 64 65  oMenu.deleteNode
1a60: 73 28 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  s();.        }. 
1a70: 20 20 20 20 20 20 20 74 68 69 73 2e 6c 4d 65 6e         this.lMen
1a80: 75 2e 6c 65 6e 67 74 68 20 3d 20 30 3b 20 2f 2f  u.length = 0; //
1a90: 20 74 6f 20 63 6c 65 61 72 20 61 6e 20 61 72 72   to clear an arr
1aa0: 61 79 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ay.        this.
1ab0: 6c 69 73 74 65 6e 52 69 67 68 74 43 6c 69 63 6b  listenRightClick
1ac0: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
1ad0: 2e 63 72 65 61 74 65 4d 65 6e 75 73 28 29 3b 0a  .createMenus();.
1ae0: 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 72 65 61      },..    crea
1af0: 74 65 54 46 50 61 6e 65 6c 3a 20 66 75 6e 63 74  teTFPanel: funct
1b00: 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20  ion () {.       
1b10: 20 69 66 20 28 74 68 69 73 2e 6f 54 46 50 61 6e   if (this.oTFPan
1b20: 65 6c 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20  el === null) {. 
1b30: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1b40: 6f 54 46 50 61 6e 65 6c 20 3d 20 6e 65 77 20 47  oTFPanel = new G
1b50: 72 61 6d 6d 61 6c 65 63 74 65 54 65 78 74 46 6f  rammalecteTextFo
1b60: 72 6d 61 74 74 65 72 28 22 67 72 61 6d 6d 61 6c  rmatter("grammal
1b70: 65 63 74 65 5f 74 66 5f 70 61 6e 65 6c 22 2c 20  ecte_tf_panel", 
1b80: 22 46 6f 72 6d 61 74 65 75 72 20 64 65 20 74 65  "Formateur de te
1b90: 78 74 65 22 2c 20 37 36 30 2c 20 36 31 35 2c 20  xte", 760, 615, 
1ba0: 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20  false);.        
1bb0: 20 20 20 20 2f 2f 74 68 69 73 2e 6f 54 46 50 61      //this.oTFPa
1bc0: 6e 65 6c 2e 6c 6f 67 49 6e 6e 65 72 48 54 4d 4c  nel.logInnerHTML
1bd0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
1be0: 74 68 69 73 2e 6f 54 46 50 61 6e 65 6c 2e 69 6e  this.oTFPanel.in
1bf0: 73 65 72 74 49 6e 74 6f 50 61 67 65 28 29 3b 0a  sertIntoPage();.
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 64              wind
1c10: 6f 77 2e 73 65 74 54 69 6d 65 6f 75 74 28 66 75  ow.setTimeout(fu
1c20: 6e 63 74 69 6f 6e 28 73 65 6c 66 29 20 7b 0a 20  nction(self) {. 
1c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1c40: 65 6c 66 2e 6f 54 46 50 61 6e 65 6c 2e 61 64 6a  elf.oTFPanel.adj
1c50: 75 73 74 48 65 69 67 68 74 28 29 3b 0a 20 20 20  ustHeight();.   
1c60: 20 20 20 20 20 20 20 20 20 7d 2c 20 35 30 2c 20           }, 50, 
1c70: 74 68 69 73 29 3b 0a 20 20 20 20 20 20 20 20 7d  this);.        }
1c80: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 63 72 65  .    },..    cre
1c90: 61 74 65 4c 78 67 50 61 6e 65 6c 3a 20 66 75 6e  ateLxgPanel: fun
1ca0: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20  ction () {.     
1cb0: 20 20 20 69 66 20 28 74 68 69 73 2e 6f 4c 78 67     if (this.oLxg
1cc0: 50 61 6e 65 6c 20 3d 3d 3d 20 6e 75 6c 6c 29 20  Panel === null) 
1cd0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  {.            th
1ce0: 69 73 2e 6f 4c 78 67 50 61 6e 65 6c 20 3d 20 6e  is.oLxgPanel = n
1cf0: 65 77 20 47 72 61 6d 6d 61 6c 65 63 74 65 4c 65  ew GrammalecteLe
1d00: 78 69 63 6f 67 72 61 70 68 65 72 28 22 67 72 61  xicographer("gra
1d10: 6d 6d 61 6c 65 63 74 65 5f 6c 78 67 5f 70 61 6e  mmalecte_lxg_pan
1d20: 65 6c 22 2c 20 22 4c 65 78 69 63 6f 67 72 61 70  el", "Lexicograp
1d30: 68 65 22 2c 20 35 30 30 2c 20 37 30 30 29 3b 0a  he", 500, 700);.
1d40: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1d50: 2e 6f 4c 78 67 50 61 6e 65 6c 2e 69 6e 73 65 72  .oLxgPanel.inser
1d60: 74 49 6e 74 6f 50 61 67 65 28 29 3b 0a 20 20 20  tIntoPage();.   
1d70: 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20       }.    },.. 
1d80: 20 20 20 63 72 65 61 74 65 47 43 50 61 6e 65 6c     createGCPanel
1d90: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a  : function () {.
1da0: 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
1db0: 2e 6f 47 43 50 61 6e 65 6c 20 3d 3d 3d 20 6e 75  .oGCPanel === nu
1dc0: 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ll) {.          
1dd0: 20 20 74 68 69 73 2e 6f 47 43 50 61 6e 65 6c 20    this.oGCPanel 
1de0: 3d 20 6e 65 77 20 47 72 61 6d 6d 61 6c 65 63 74  = new Grammalect
1df0: 65 47 72 61 6d 6d 61 72 43 68 65 63 6b 65 72 28  eGrammarChecker(
1e00: 22 67 72 61 6d 6d 61 6c 65 63 74 65 5f 67 63 5f  "grammalecte_gc_
1e10: 70 61 6e 65 6c 22 2c 20 22 47 72 61 6d 6d 61 6c  panel", "Grammal
1e20: 65 63 74 65 22 2c 20 35 30 30 2c 20 37 30 30 29  ecte", 500, 700)
1e30: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ;.            th
1e40: 69 73 2e 6f 47 43 50 61 6e 65 6c 2e 69 6e 73 65  is.oGCPanel.inse
1e50: 72 74 49 6e 74 6f 50 61 67 65 28 29 3b 0a 20 20  rtIntoPage();.  
1e60: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a        }.    },..
1e70: 20 20 20 20 63 72 65 61 74 65 4d 65 73 73 61 67      createMessag
1e80: 65 42 6f 78 3a 20 66 75 6e 63 74 69 6f 6e 20 28  eBox: function (
1e90: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28  ) {.        if (
1ea0: 74 68 69 73 2e 6f 4d 65 73 73 61 67 65 42 6f 78  this.oMessageBox
1eb0: 20 3d 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20   === null) {.   
1ec0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 4d           this.oM
1ed0: 65 73 73 61 67 65 42 6f 78 20 3d 20 6e 65 77 20  essageBox = new 
1ee0: 47 72 61 6d 6d 61 6c 65 63 74 65 4d 65 73 73 61  GrammalecteMessa
1ef0: 67 65 42 6f 78 28 22 67 72 61 6d 6d 61 6c 65 63  geBox("grammalec
1f00: 74 65 5f 6d 65 73 73 61 67 65 5f 62 6f 78 22 2c  te_message_box",
1f10: 20 22 47 72 61 6d 6d 61 6c 65 63 74 65 22 29 3b   "Grammalecte");
1f20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1f30: 73 2e 6f 4d 65 73 73 61 67 65 42 6f 78 2e 69 6e  s.oMessageBox.in
1f40: 73 65 72 74 49 6e 74 6f 50 61 67 65 28 29 3b 0a  sertIntoPage();.
1f50: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c          }.    },
1f60: 0a 0a 20 20 20 20 73 74 61 72 74 47 43 50 61 6e  ..    startGCPan
1f70: 65 6c 3a 20 66 75 6e 63 74 69 6f 6e 20 28 78 4e  el: function (xN
1f80: 6f 64 65 3d 6e 75 6c 6c 29 20 7b 0a 20 20 20 20  ode=null) {.    
1f90: 20 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 47      this.createG
1fa0: 43 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20 20 20  CPanel();.      
1fb0: 20 20 74 68 69 73 2e 6f 47 43 50 61 6e 65 6c 2e    this.oGCPanel.
1fc0: 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20 20  clear();.       
1fd0: 20 74 68 69 73 2e 6f 47 43 50 61 6e 65 6c 2e 73   this.oGCPanel.s
1fe0: 68 6f 77 28 29 3b 0a 20 20 20 20 20 20 20 20 74  how();.        t
1ff0: 68 69 73 2e 6f 47 43 50 61 6e 65 6c 2e 73 74 61  his.oGCPanel.sta
2000: 72 74 28 78 4e 6f 64 65 29 3b 0a 20 20 20 20 20  rt(xNode);.     
2010: 20 20 20 74 68 69 73 2e 6f 47 43 50 61 6e 65 6c     this.oGCPanel
2020: 2e 73 74 61 72 74 57 61 69 74 49 63 6f 6e 28 29  .startWaitIcon()
2030: 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 73 74  ;.    },..    st
2040: 61 72 74 4c 78 67 50 61 6e 65 6c 3a 20 66 75 6e  artLxgPanel: fun
2050: 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20  ction () {.     
2060: 20 20 20 74 68 69 73 2e 63 72 65 61 74 65 4c 78     this.createLx
2070: 67 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20 20 20  gPanel();.      
2080: 20 20 74 68 69 73 2e 6f 4c 78 67 50 61 6e 65 6c    this.oLxgPanel
2090: 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 20 20 20  .clear();.      
20a0: 20 20 74 68 69 73 2e 6f 4c 78 67 50 61 6e 65 6c    this.oLxgPanel
20b0: 2e 73 68 6f 77 28 29 3b 0a 20 20 20 20 20 20 20  .show();.       
20c0: 20 74 68 69 73 2e 6f 4c 78 67 50 61 6e 65 6c 2e   this.oLxgPanel.
20d0: 73 74 61 72 74 57 61 69 74 49 63 6f 6e 28 29 3b  startWaitIcon();
20e0: 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 73 74 61  .    },..    sta
20f0: 72 74 46 54 50 61 6e 65 6c 3a 20 66 75 6e 63 74  rtFTPanel: funct
2100: 69 6f 6e 20 28 78 4e 6f 64 65 3d 6e 75 6c 6c 29  ion (xNode=null)
2110: 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e   {.        this.
2120: 63 72 65 61 74 65 54 46 50 61 6e 65 6c 28 29 3b  createTFPanel();
2130: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 54  .        this.oT
2140: 46 50 61 6e 65 6c 2e 73 74 61 72 74 28 78 4e 6f  FPanel.start(xNo
2150: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69  de);.        thi
2160: 73 2e 6f 54 46 50 61 6e 65 6c 2e 73 68 6f 77 28  s.oTFPanel.show(
2170: 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 73  );.    },..    s
2180: 68 6f 77 4d 65 73 73 61 67 65 3a 20 66 75 6e 63  howMessage: func
2190: 74 69 6f 6e 20 28 73 4d 65 73 73 61 67 65 29 20  tion (sMessage) 
21a0: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 63  {.        this.c
21b0: 72 65 61 74 65 4d 65 73 73 61 67 65 42 6f 78 28  reateMessageBox(
21c0: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
21d0: 6f 4d 65 73 73 61 67 65 42 6f 78 2e 73 68 6f 77  oMessageBox.show
21e0: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
21f0: 2e 6f 4d 65 73 73 61 67 65 42 6f 78 2e 73 65 74  .oMessageBox.set
2200: 4d 65 73 73 61 67 65 28 73 4d 65 73 73 61 67 65  Message(sMessage
2210: 29 3b 0a 20 20 20 20 7d 2c 0a 0a 20 20 20 20 67  );.    },..    g
2220: 65 74 50 61 67 65 54 65 78 74 3a 20 66 75 6e 63  etPageText: func
2230: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20  tion () {.      
2240: 20 20 6c 65 74 20 73 50 61 67 65 54 65 78 74 20    let sPageText 
2250: 3d 20 64 6f 63 75 6d 65 6e 74 2e 62 6f 64 79 2e  = document.body.
2260: 69 6e 6e 65 72 54 65 78 74 3b 0a 20 20 20 20 20  innerText;.     
2270: 20 20 20 6c 65 74 20 6e 50 6f 73 20 3d 20 73 50     let nPos = sP
2280: 61 67 65 54 65 78 74 2e 69 6e 64 65 78 4f 66 28  ageText.indexOf(
2290: 22 5f 5f 67 72 61 6d 6d 61 6c 65 63 74 65 5f 70  "__grammalecte_p
22a0: 61 6e 65 6c 5f 5f 22 29 3b 0a 20 20 20 20 20 20  anel__");.      
22b0: 20 20 69 66 20 28 6e 50 6f 73 20 3e 3d 20 30 29    if (nPos >= 0)
22c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73   {.            s
22d0: 50 61 67 65 54 65 78 74 20 3d 20 73 50 61 67 65  PageText = sPage
22e0: 54 65 78 74 2e 73 6c 69 63 65 28 30 2c 20 6e 50  Text.slice(0, nP
22f0: 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  os);.        }. 
2300: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 50         return sP
2310: 61 67 65 54 65 78 74 3b 0a 20 20 20 20 7d 2c 0a  ageText;.    },.
2320: 0a 20 20 20 20 63 72 65 61 74 65 4e 6f 64 65 3a  .    createNode:
2330: 20 66 75 6e 63 74 69 6f 6e 20 28 73 54 79 70 65   function (sType
2340: 2c 20 6f 41 74 74 72 2c 20 6f 44 61 74 61 73 65  , oAttr, oDatase
2350: 74 3d 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20  t=null) {.      
2360: 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20    try {.        
2370: 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 20 3d 20      let xNode = 
2380: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45  document.createE
2390: 6c 65 6d 65 6e 74 28 73 54 79 70 65 29 3b 0a 20  lement(sType);. 
23a0: 20 20 20 20 20 20 20 20 20 20 20 4f 62 6a 65 63             Objec
23b0: 74 2e 61 73 73 69 67 6e 28 78 4e 6f 64 65 2c 20  t.assign(xNode, 
23c0: 6f 41 74 74 72 29 3b 0a 20 20 20 20 20 20 20 20  oAttr);.        
23d0: 20 20 20 20 69 66 20 28 6f 44 61 74 61 73 65 74      if (oDataset
23e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
23f0: 20 20 20 20 4f 62 6a 65 63 74 2e 61 73 73 69 67      Object.assig
2400: 6e 28 78 4e 6f 64 65 2e 64 61 74 61 73 65 74 2c  n(xNode.dataset,
2410: 20 6f 44 61 74 61 73 65 74 29 3b 0a 20 20 20 20   oDataset);.    
2420: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
2430: 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 4e 6f        return xNo
2440: 64 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  de;.        }.  
2450: 20 20 20 20 20 20 63 61 74 63 68 20 28 65 29 20        catch (e) 
2460: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68  {.            sh
2470: 6f 77 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20  owError(e);.    
2480: 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 0a 20 20      }.    },..  
2490: 20 20 63 72 65 61 74 65 53 74 79 6c 65 3a 20 66    createStyle: f
24a0: 75 6e 63 74 69 6f 6e 20 28 73 4c 69 6e 6b 43 73  unction (sLinkCs
24b0: 73 2c 20 73 4c 69 6e 6b 49 64 3d 6e 75 6c 6c 2c  s, sLinkId=null,
24c0: 20 78 4e 6f 64 65 54 6f 41 70 70 65 6e 64 54 6f   xNodeToAppendTo
24d0: 3d 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20  =null) {.       
24e0: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20   try {.         
24f0: 20 20 20 6c 65 74 20 78 4e 6f 64 65 20 3d 20 64     let xNode = d
2500: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c  ocument.createEl
2510: 65 6d 65 6e 74 28 22 6c 69 6e 6b 22 29 3b 0a 20  ement("link");. 
2520: 20 20 20 20 20 20 20 20 20 20 20 4f 62 6a 65 63             Objec
2530: 74 2e 61 73 73 69 67 6e 28 78 4e 6f 64 65 2c 20  t.assign(xNode, 
2540: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
2550: 20 20 72 65 6c 3a 20 22 73 74 79 6c 65 73 68 65    rel: "styleshe
2560: 65 74 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20  et",.           
2570: 20 20 20 20 20 74 79 70 65 3a 20 22 74 65 78 74       type: "text
2580: 2f 63 73 73 22 2c 0a 20 20 20 20 20 20 20 20 20  /css",.         
2590: 20 20 20 20 20 20 20 6d 65 64 69 61 3a 20 22 61         media: "a
25a0: 6c 6c 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ll",.           
25b0: 20 20 20 20 20 68 72 65 66 3a 20 74 68 69 73 2e       href: this.
25c0: 73 45 78 74 65 6e 73 69 6f 6e 55 72 6c 20 2b 20  sExtensionUrl + 
25d0: 73 4c 69 6e 6b 43 73 73 0a 20 20 20 20 20 20 20  sLinkCss.       
25e0: 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20       });.       
25f0: 20 20 20 20 20 69 66 20 28 73 4c 69 6e 6b 49 64       if (sLinkId
2600: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
2610: 20 20 20 20 4f 62 6a 65 63 74 2e 61 73 73 69 67      Object.assig
2620: 6e 28 78 4e 6f 64 65 2c 20 7b 20 69 64 3a 20 73  n(xNode, { id: s
2630: 4c 69 6e 6b 49 64 20 7d 29 3b 0a 20 20 20 20 20  LinkId });.     
2640: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
2650: 20 20 20 20 20 69 66 20 28 78 4e 6f 64 65 54 6f       if (xNodeTo
2660: 41 70 70 65 6e 64 54 6f 29 20 7b 0a 20 20 20 20  AppendTo) {.    
2670: 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64              xNod
2680: 65 54 6f 41 70 70 65 6e 64 54 6f 2e 61 70 70 65  eToAppendTo.appe
2690: 6e 64 43 68 69 6c 64 28 78 4e 6f 64 65 29 3b 0a  ndChild(xNode);.
26a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
26b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26c0: 20 78 4e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20   xNode;.        
26d0: 7d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20  }.        catch 
26e0: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
26f0: 20 20 73 68 6f 77 45 72 72 6f 72 28 65 29 3b 0a    showError(e);.
2700: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
2710: 7d 3b 0a 0a 2f 2a 0a 20 20 20 20 43 6f 6e 6e 65  };../*.    Conne
2720: 78 69 6f 6e 20 74 6f 20 74 68 65 20 62 61 63 6b  xion to the back
2730: 67 72 6f 75 6e 64 0a 2a 2f 0a 6c 65 74 20 78 47  ground.*/.let xG
2740: 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 20 3d  rammalectePort =
2750: 20 62 72 6f 77 73 65 72 2e 72 75 6e 74 69 6d 65   browser.runtime
2760: 2e 63 6f 6e 6e 65 63 74 28 7b 20 6e 61 6d 65 3a  .connect({ name:
2770: 20 22 63 6f 6e 74 65 6e 74 2d 73 63 72 69 70 74   "content-script
2780: 20 70 6f 72 74 22 20 7d 29 3b 0a 0a 78 47 72 61   port" });..xGra
2790: 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 6f 6e 4d  mmalectePort.onM
27a0: 65 73 73 61 67 65 2e 61 64 64 4c 69 73 74 65 6e  essage.addListen
27b0: 65 72 28 66 75 6e 63 74 69 6f 6e 20 28 6f 4d 65  er(function (oMe
27c0: 73 73 61 67 65 29 20 7b 0a 20 20 20 20 6c 65 74  ssage) {.    let
27d0: 20 7b 20 73 41 63 74 69 6f 6e 44 6f 6e 65 2c 20   { sActionDone, 
27e0: 72 65 73 75 6c 74 2c 20 64 49 6e 66 6f 2c 20 62  result, dInfo, b
27f0: 45 6e 64 2c 20 62 45 72 72 6f 72 20 7d 20 3d 20  End, bError } = 
2800: 6f 4d 65 73 73 61 67 65 3b 0a 20 20 20 20 6c 65  oMessage;.    le
2810: 74 20 73 54 65 78 74 20 3d 20 22 22 3b 0a 20 20  t sText = "";.  
2820: 20 20 73 77 69 74 63 68 20 28 73 41 63 74 69 6f    switch (sActio
2830: 6e 44 6f 6e 65 29 20 7b 0a 20 20 20 20 20 20 20  nDone) {.       
2840: 20 63 61 73 65 20 22 69 6e 69 74 22 3a 0a 20 20   case "init":.  
2850: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
2860: 61 6c 65 63 74 65 2e 73 45 78 74 65 6e 73 69 6f  alecte.sExtensio
2870: 6e 55 72 6c 20 3d 20 6f 4d 65 73 73 61 67 65 2e  nUrl = oMessage.
2880: 73 55 72 6c 3b 0a 20 20 20 20 20 20 20 20 20 20  sUrl;.          
2890: 20 20 2f 2f 20 53 74 61 72 74 0a 20 20 20 20 20    // Start.     
28a0: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
28b0: 63 74 65 2e 6c 69 73 74 65 6e 52 69 67 68 74 43  cte.listenRightC
28c0: 6c 69 63 6b 28 29 3b 0a 20 20 20 20 20 20 20 20  lick();.        
28d0: 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65      oGrammalecte
28e0: 2e 63 72 65 61 74 65 4d 65 6e 75 73 28 29 3b 0a  .createMenus();.
28f0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 47 72 61              oGra
2900: 6d 6d 61 6c 65 63 74 65 2e 6f 62 73 65 72 76 65  mmalecte.observe
2910: 50 61 67 65 28 29 3b 0a 20 20 20 20 20 20 20 20  Page();.        
2920: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
2930: 20 20 20 63 61 73 65 20 22 70 61 72 73 65 41 6e     case "parseAn
2940: 64 53 70 65 6c 6c 63 68 65 63 6b 22 3a 0a 20 20  dSpellcheck":.  
2950: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 62            if (!b
2960: 45 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20  End) {.         
2970: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
2980: 63 74 65 2e 6f 47 43 50 61 6e 65 6c 2e 61 64 64  cte.oGCPanel.add
2990: 50 61 72 61 67 72 61 70 68 52 65 73 75 6c 74 28  ParagraphResult(
29a0: 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 20 20 20  result);.       
29b0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
29c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 47                oG
29d0: 72 61 6d 6d 61 6c 65 63 74 65 2e 6f 47 43 50 61  rammalecte.oGCPa
29e0: 6e 65 6c 2e 73 74 6f 70 57 61 69 74 49 63 6f 6e  nel.stopWaitIcon
29f0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
2a00: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  }.            br
2a10: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 63 61 73  eak;.        cas
2a20: 65 20 22 70 61 72 73 65 41 6e 64 53 70 65 6c 6c  e "parseAndSpell
2a30: 63 68 65 63 6b 31 22 3a 0a 20 20 20 20 20 20 20  check1":.       
2a40: 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74       oGrammalect
2a50: 65 2e 6f 47 43 50 61 6e 65 6c 2e 72 65 66 72 65  e.oGCPanel.refre
2a60: 73 68 50 61 72 61 67 72 61 70 68 28 64 49 6e 66  shParagraph(dInf
2a70: 6f 2e 73 50 61 72 61 67 72 61 70 68 49 64 2c 20  o.sParagraphId, 
2a80: 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 20 20 20  result);.       
2a90: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20       break;.    
2aa0: 20 20 20 20 63 61 73 65 20 22 67 65 74 4c 69 73      case "getLis
2ab0: 74 4f 66 54 6f 6b 65 6e 73 22 3a 0a 20 20 20 20  tOfTokens":.    
2ac0: 20 20 20 20 20 20 20 20 69 66 20 28 21 62 45 6e          if (!bEn
2ad0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  d) {.           
2ae0: 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74       oGrammalect
2af0: 65 2e 6f 4c 78 67 50 61 6e 65 6c 2e 61 64 64 4c  e.oLxgPanel.addL
2b00: 69 73 74 4f 66 54 6f 6b 65 6e 73 28 72 65 73 75  istOfTokens(resu
2b10: 6c 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  lt);.           
2b20: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
2b30: 20 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d            oGramm
2b40: 61 6c 65 63 74 65 2e 6f 4c 78 67 50 61 6e 65 6c  alecte.oLxgPanel
2b50: 2e 73 74 6f 70 57 61 69 74 49 63 6f 6e 28 29 3b  .stopWaitIcon();
2b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
2b70: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
2b80: 3b 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  ;.        case "
2b90: 67 65 74 53 70 65 6c 6c 53 75 67 67 65 73 74 69  getSpellSuggesti
2ba0: 6f 6e 73 22 3a 0a 20 20 20 20 20 20 20 20 20 20  ons":.          
2bb0: 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 6f    oGrammalecte.o
2bc0: 47 43 50 61 6e 65 6c 2e 6f 54 6f 6f 6c 74 69 70  GCPanel.oTooltip
2bd0: 2e 73 65 74 53 70 65 6c 6c 53 75 67 67 65 73 74  .setSpellSuggest
2be0: 69 6f 6e 73 46 6f 72 28 72 65 73 75 6c 74 2e 73  ionsFor(result.s
2bf0: 57 6f 72 64 2c 20 72 65 73 75 6c 74 2e 61 53 75  Word, result.aSu
2c00: 67 67 2c 20 72 65 73 75 6c 74 2e 69 53 75 67 67  gg, result.iSugg
2c10: 42 6c 6f 63 6b 2c 20 64 49 6e 66 6f 2e 73 45 72  Block, dInfo.sEr
2c20: 72 6f 72 49 64 29 3b 0a 20 20 20 20 20 20 20 20  rorId);.        
2c30: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
2c40: 20 20 20 2f 2a 0a 20 20 20 20 20 20 20 20 20 20     /*.          
2c50: 20 20 43 6f 6d 6d 61 6e 64 73 20 72 65 63 65 69    Commands recei
2c60: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e  ved from the con
2c70: 74 65 78 74 20 6d 65 6e 75 0a 20 20 20 20 20 20  text menu.      
2c80: 20 20 20 20 20 20 28 43 6f 6e 74 65 78 74 20 6d        (Context m
2c90: 65 6e 75 20 61 72 65 20 69 6e 69 74 69 61 6c 69  enu are initiali
2ca0: 7a 65 64 20 69 6e 20 62 61 63 6b 67 72 6f 75 6e  zed in backgroun
2cb0: 64 29 0a 20 20 20 20 20 20 20 20 2a 2f 0a 20 20  d).        */.  
2cc0: 20 20 20 20 20 20 2f 2f 20 47 72 61 6d 6d 61 72        // Grammar
2cd0: 20 63 68 65 63 6b 65 72 20 63 6f 6d 6d 61 6e 64   checker command
2ce0: 73 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  s.        case "
2cf0: 72 69 67 68 74 43 6c 69 63 6b 47 43 45 64 69 74  rightClickGCEdit
2d00: 61 62 6c 65 4e 6f 64 65 22 3a 0a 20 20 20 20 20  ableNode":.     
2d10: 20 20 20 20 20 20 20 69 66 20 28 6f 47 72 61 6d         if (oGram
2d20: 6d 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c  malecte.xRightCl
2d30: 69 63 6b 65 64 4e 6f 64 65 20 21 3d 3d 20 6e 75  ickedNode !== nu
2d40: 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ll) {.          
2d50: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
2d60: 74 65 2e 73 74 61 72 74 47 43 50 61 6e 65 6c 28  te.startGCPanel(
2d70: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 78 52 69  oGrammalecte.xRi
2d80: 67 68 74 43 6c 69 63 6b 65 64 4e 6f 64 65 29 3b  ghtClickedNode);
2d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2da0: 20 73 54 65 78 74 20 3d 20 6f 47 72 61 6d 6d 61   sText = oGramma
2db0: 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c 69 63  lecte.xRightClic
2dc0: 6b 65 64 4e 6f 64 65 2e 74 61 67 4e 61 6d 65 20  kedNode.tagName 
2dd0: 3d 3d 20 22 54 45 58 54 41 52 45 41 22 20 3f 20  == "TEXTAREA" ? 
2de0: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 78 52 69  oGrammalecte.xRi
2df0: 67 68 74 43 6c 69 63 6b 65 64 4e 6f 64 65 2e 76  ghtClickedNode.v
2e00: 61 6c 75 65 20 3a 20 6f 47 72 61 6d 6d 61 6c 65  alue : oGrammale
2e10: 63 74 65 2e 78 52 69 67 68 74 43 6c 69 63 6b 65  cte.xRightClicke
2e20: 64 4e 6f 64 65 2e 69 6e 6e 65 72 54 65 78 74 3b  dNode.innerText;
2e30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e40: 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72   xGrammalectePor
2e50: 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a  t.postMessage({.
2e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e70: 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20 22 70      sCommand: "p
2e80: 61 72 73 65 41 6e 64 53 70 65 6c 6c 63 68 65 63  arseAndSpellchec
2e90: 6b 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  k",.            
2ea0: 20 20 20 20 20 20 20 20 64 50 61 72 61 6d 3a 20          dParam: 
2eb0: 7b 20 73 54 65 78 74 3a 20 73 54 65 78 74 2c 20  { sText: sText, 
2ec0: 73 43 6f 75 6e 74 72 79 3a 20 22 46 52 22 2c 20  sCountry: "FR", 
2ed0: 62 44 65 62 75 67 3a 20 66 61 6c 73 65 2c 20 62  bDebug: false, b
2ee0: 43 6f 6e 74 65 78 74 3a 20 66 61 6c 73 65 20 7d  Context: false }
2ef0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2f00: 20 20 20 20 20 20 64 49 6e 66 6f 3a 20 7b 20 73        dInfo: { s
2f10: 54 65 78 74 41 72 65 61 49 64 3a 20 6f 47 72 61  TextAreaId: oGra
2f20: 6d 6d 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43  mmalecte.xRightC
2f30: 6c 69 63 6b 65 64 4e 6f 64 65 2e 69 64 20 7d 0a  lickedNode.id }.
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f50: 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  });.            
2f60: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20  } else {.       
2f70: 20 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61           oGramma
2f80: 6c 65 63 74 65 2e 73 68 6f 77 4d 65 73 73 61 67  lecte.showMessag
2f90: 65 28 22 45 72 72 65 75 72 2e 20 4c 65 20 6e 6f  e("Erreur. Le no
2fa0: 64 65 20 73 75 72 20 6c 65 71 75 65 6c 20 76 6f  de sur lequel vo
2fb0: 75 73 20 61 76 65 7a 20 63 6c 69 71 75 c3 a9 20  us avez cliqu.. 
2fc0: 6e e2 80 99 61 20 70 61 73 20 70 75 20 c3 aa 74  n...a pas pu ..t
2fd0: 72 65 20 69 64 65 6e 74 69 66 69 c3 a9 2e 20 53  re identifi... S
2fe0: c3 a9 6c 65 63 74 69 6f 6e 6e 65 7a 20 6c 65 20  ..lectionnez le 
2ff0: 74 65 78 74 65 20 c3 a0 20 63 6f 72 72 69 67 65  texte .. corrige
3000: 72 20 65 74 20 72 65 6c 61 6e 63 65 7a 20 6c 65  r et relancez le
3010: 20 63 6f 72 72 65 63 74 65 75 72 20 76 69 61 20   correcteur via 
3020: 6c 65 20 6d 65 6e 75 20 63 6f 6e 74 65 78 74 75  le menu contextu
3030: 65 6c 2e 22 29 3b 0a 20 20 20 20 20 20 20 20 20  el.");.         
3040: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
3050: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20   break;.        
3060: 63 61 73 65 20 22 72 69 67 68 74 43 6c 69 63 6b  case "rightClick
3070: 47 43 50 61 67 65 22 3a 0a 20 20 20 20 20 20 20  GCPage":.       
3080: 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74       oGrammalect
3090: 65 2e 73 74 61 72 74 47 43 50 61 6e 65 6c 28 29  e.startGCPanel()
30a0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 47  ;.            xG
30b0: 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e 70  rammalectePort.p
30c0: 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20 20  ostMessage({.   
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 43 6f               sCo
30e0: 6d 6d 61 6e 64 3a 20 22 70 61 72 73 65 41 6e 64  mmand: "parseAnd
30f0: 53 70 65 6c 6c 63 68 65 63 6b 22 2c 0a 20 20 20  Spellcheck",.   
3100: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 50 61               dPa
3110: 72 61 6d 3a 20 7b 20 73 54 65 78 74 3a 20 6f 47  ram: { sText: oG
3120: 72 61 6d 6d 61 6c 65 63 74 65 2e 67 65 74 50 61  rammalecte.getPa
3130: 67 65 54 65 78 74 28 29 2c 20 73 43 6f 75 6e 74  geText(), sCount
3140: 72 79 3a 20 22 46 52 22 2c 20 62 44 65 62 75 67  ry: "FR", bDebug
3150: 3a 20 66 61 6c 73 65 2c 20 62 43 6f 6e 74 65 78  : false, bContex
3160: 74 3a 20 66 61 6c 73 65 20 7d 2c 0a 20 20 20 20  t: false },.    
3170: 20 20 20 20 20 20 20 20 20 20 20 20 64 49 6e 66              dInf
3180: 6f 3a 20 7b 7d 0a 20 20 20 20 20 20 20 20 20 20  o: {}.          
3190: 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
31a0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20    break;.       
31b0: 20 63 61 73 65 20 22 72 69 67 68 74 43 6c 69 63   case "rightClic
31c0: 6b 47 43 53 65 6c 65 63 74 65 64 54 65 78 74 22  kGCSelectedText"
31d0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 47  :.            oG
31e0: 72 61 6d 6d 61 6c 65 63 74 65 2e 73 74 61 72 74  rammalecte.start
31f0: 47 43 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20 20  GCPanel();.     
3200: 20 20 20 20 20 20 20 2f 2f 20 73 65 6c 65 63 74         // select
3210: 65 64 20 74 65 78 74 20 69 73 20 73 65 6e 74 20  ed text is sent 
3220: 74 6f 20 74 68 65 20 47 43 20 77 6f 72 6b 65 72  to the GC worker
3230: 20 69 6e 20 74 68 65 20 62 61 63 6b 67 72 6f 75   in the backgrou
3240: 6e 64 20 73 63 72 69 70 74 2e 0a 20 20 20 20 20  nd script..     
3250: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20         break;.  
3260: 20 20 20 20 20 20 2f 2f 20 4c 65 78 69 63 6f 67        // Lexicog
3270: 72 61 70 68 65 72 20 63 6f 6d 6d 61 6e 64 73 0a  rapher commands.
3280: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 72 69          case "ri
3290: 67 68 74 43 6c 69 63 6b 4c 78 67 45 64 69 74 61  ghtClickLxgEdita
32a0: 62 6c 65 4e 6f 64 65 22 3a 0a 20 20 20 20 20 20  bleNode":.      
32b0: 20 20 20 20 20 20 69 66 20 28 6f 47 72 61 6d 6d        if (oGramm
32c0: 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c 69  alecte.xRightCli
32d0: 63 6b 65 64 4e 6f 64 65 20 21 3d 3d 20 6e 75 6c  ckedNode !== nul
32e0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  l) {.           
32f0: 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74       oGrammalect
3300: 65 2e 73 74 61 72 74 4c 78 67 50 61 6e 65 6c 28  e.startLxgPanel(
3310: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
3320: 20 20 20 73 54 65 78 74 20 3d 20 6f 47 72 61 6d     sText = oGram
3330: 6d 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c  malecte.xRightCl
3340: 69 63 6b 65 64 4e 6f 64 65 2e 74 61 67 4e 61 6d  ickedNode.tagNam
3350: 65 20 3d 3d 20 22 54 45 58 54 41 52 45 41 22 20  e == "TEXTAREA" 
3360: 3f 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 78  ? oGrammalecte.x
3370: 52 69 67 68 74 43 6c 69 63 6b 65 64 4e 6f 64 65  RightClickedNode
3380: 2e 76 61 6c 75 65 20 3a 20 6f 47 72 61 6d 6d 61  .value : oGramma
3390: 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c 69 63  lecte.xRightClic
33a0: 6b 65 64 4e 6f 64 65 2e 69 6e 6e 65 72 54 65 78  kedNode.innerTex
33b0: 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t;.             
33c0: 20 20 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50     xGrammalecteP
33d0: 6f 72 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28  ort.postMessage(
33e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
33f0: 20 20 20 20 20 20 73 43 6f 6d 6d 61 6e 64 3a 20        sCommand: 
3400: 22 67 65 74 4c 69 73 74 4f 66 54 6f 6b 65 6e 73  "getListOfTokens
3410: 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ",.             
3420: 20 20 20 20 20 20 20 64 50 61 72 61 6d 3a 20 7b         dParam: {
3430: 20 73 54 65 78 74 3a 20 73 54 65 78 74 20 7d 2c   sText: sText },
3440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3450: 20 20 20 20 20 64 49 6e 66 6f 3a 20 7b 20 73 54       dInfo: { sT
3460: 65 78 74 41 72 65 61 49 64 3a 20 6f 47 72 61 6d  extAreaId: oGram
3470: 6d 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c  malecte.xRightCl
3480: 69 63 6b 65 64 4e 6f 64 65 2e 69 64 20 7d 0a 20  ickedNode.id }. 
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
34a0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  );.            }
34b0: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20   else {.        
34c0: 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c          oGrammal
34d0: 65 63 74 65 2e 73 68 6f 77 4d 65 73 73 61 67 65  ecte.showMessage
34e0: 28 22 45 72 72 65 75 72 2e 20 4c 65 20 6e 6f 64  ("Erreur. Le nod
34f0: 65 20 73 75 72 20 6c 65 71 75 65 6c 20 76 6f 75  e sur lequel vou
3500: 73 20 61 76 65 7a 20 63 6c 69 71 75 c3 a9 20 6e  s avez cliqu.. n
3510: e2 80 99 61 20 70 61 73 20 70 75 20 c3 aa 74 72  ...a pas pu ..tr
3520: 65 20 69 64 65 6e 74 69 66 69 c3 a9 2e 20 53 c3  e identifi... S.
3530: a9 6c 65 63 74 69 6f 6e 6e 65 7a 20 6c 65 20 74  .lectionnez le t
3540: 65 78 74 65 20 c3 a0 20 61 6e 61 6c 79 73 65 72  exte .. analyser
3550: 20 65 74 20 72 65 6c 61 6e 63 65 7a 20 6c 65 20   et relancez le 
3560: 6c 65 78 69 63 6f 67 72 61 70 68 65 20 76 69 61  lexicographe via
3570: 20 6c 65 20 6d 65 6e 75 20 63 6f 6e 74 65 78 74   le menu context
3580: 75 65 6c 2e 22 29 3b 0a 20 20 20 20 20 20 20 20  uel.");.        
3590: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
35a0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20    break;.       
35b0: 20 63 61 73 65 20 22 72 69 67 68 74 43 6c 69 63   case "rightClic
35c0: 6b 4c 78 67 50 61 67 65 22 3a 0a 20 20 20 20 20  kLxgPage":.     
35d0: 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65         oGrammale
35e0: 63 74 65 2e 73 74 61 72 74 4c 78 67 50 61 6e 65  cte.startLxgPane
35f0: 6c 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  l();.           
3600: 20 78 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72   xGrammalectePor
3610: 74 2e 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a  t.postMessage({.
3620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3630: 73 43 6f 6d 6d 61 6e 64 3a 20 22 67 65 74 4c 69  sCommand: "getLi
3640: 73 74 4f 66 54 6f 6b 65 6e 73 22 2c 0a 20 20 20  stOfTokens",.   
3650: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 50 61               dPa
3660: 72 61 6d 3a 20 7b 20 73 54 65 78 74 3a 20 6f 47  ram: { sText: oG
3670: 72 61 6d 6d 61 6c 65 63 74 65 2e 67 65 74 50 61  rammalecte.getPa
3680: 67 65 54 65 78 74 28 29 20 7d 2c 0a 20 20 20 20  geText() },.    
3690: 20 20 20 20 20 20 20 20 20 20 20 20 64 49 6e 66              dInf
36a0: 6f 3a 20 7b 7d 0a 20 20 20 20 20 20 20 20 20 20  o: {}.          
36b0: 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20    });.          
36c0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20    break;.       
36d0: 20 63 61 73 65 20 22 72 69 67 68 74 43 6c 69 63   case "rightClic
36e0: 6b 4c 78 67 53 65 6c 65 63 74 65 64 54 65 78 74  kLxgSelectedText
36f0: 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ":.            o
3700: 47 72 61 6d 6d 61 6c 65 63 74 65 2e 73 74 61 72  Grammalecte.star
3710: 74 4c 78 67 50 61 6e 65 6c 28 29 3b 0a 20 20 20  tLxgPanel();.   
3720: 20 20 20 20 20 20 20 20 20 2f 2f 20 73 65 6c 65           // sele
3730: 63 74 65 64 20 74 65 78 74 20 69 73 20 73 65 6e  cted text is sen
3740: 74 20 74 6f 20 74 68 65 20 47 43 20 77 6f 72 6b  t to the GC work
3750: 65 72 20 69 6e 20 74 68 65 20 62 61 63 6b 67 72  er in the backgr
3760: 6f 75 6e 64 20 73 63 72 69 70 74 2e 0a 20 20 20  ound script..   
3770: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
3780: 20 20 20 20 20 20 20 20 2f 2f 20 54 65 78 74 20          // Text 
3790: 66 6f 72 6d 61 74 74 65 72 20 63 6f 6d 6d 61 6e  formatter comman
37a0: 64 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22  d.        case "
37b0: 72 69 67 68 74 43 6c 69 63 6b 54 46 45 64 69 74  rightClickTFEdit
37c0: 61 62 6c 65 4e 6f 64 65 22 3a 0a 20 20 20 20 20  ableNode":.     
37d0: 20 20 20 20 20 20 20 69 66 20 28 6f 47 72 61 6d         if (oGram
37e0: 6d 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c  malecte.xRightCl
37f0: 69 63 6b 65 64 4e 6f 64 65 20 21 3d 3d 20 6e 75  ickedNode !== nu
3800: 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ll) {.          
3810: 20 20 20 20 20 20 69 66 20 28 6f 47 72 61 6d 6d        if (oGramm
3820: 61 6c 65 63 74 65 2e 78 52 69 67 68 74 43 6c 69  alecte.xRightCli
3830: 63 6b 65 64 4e 6f 64 65 2e 74 61 67 4e 61 6d 65  ckedNode.tagName
3840: 20 3d 3d 20 22 54 45 58 54 41 52 45 41 22 29 20   == "TEXTAREA") 
3850: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
3860: 20 20 20 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63        oGrammalec
3870: 74 65 2e 73 74 61 72 74 46 54 50 61 6e 65 6c 28  te.startFTPanel(
3880: 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 78 52 69  oGrammalecte.xRi
3890: 67 68 74 43 6c 69 63 6b 65 64 4e 6f 64 65 29 3b  ghtClickedNode);
38a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
38b0: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
38c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 47                oG
38d0: 72 61 6d 6d 61 6c 65 63 74 65 2e 73 68 6f 77 4d  rammalecte.showM
38e0: 65 73 73 61 67 65 28 22 43 65 74 74 65 20 7a 6f  essage("Cette zo
38f0: 6e 65 20 64 65 20 74 65 78 74 65 20 6e e2 80 99  ne de texte n...
3900: 65 73 74 20 70 61 73 20 72 c3 a9 65 6c 6c 65 6d  est pas r..ellem
3910: 65 6e 74 20 75 6e 20 63 68 61 6d 70 20 64 65 20  ent un champ de 
3920: 66 6f 72 6d 75 6c 61 69 72 65 2c 20 6d 61 69 73  formulaire, mais
3930: 20 75 6e 20 6e 6f 64 65 20 48 54 4d 4c 20 c3 a9   un node HTML ..
3940: 64 69 74 61 62 6c 65 2e 20 4c 65 20 66 6f 72 6d  ditable. Le form
3950: 61 74 65 75 72 20 64 65 20 74 65 78 74 65 20 6e  ateur de texte n
3960: e2 80 99 65 73 74 20 70 61 73 20 64 69 73 70 6f  ...est pas dispo
3970: 6e 69 62 6c 65 20 70 6f 75 72 20 63 65 20 74 79  nible pour ce ty
3980: 70 65 20 64 65 20 63 68 61 6d 70 20 64 65 20 73  pe de champ de s
3990: 61 69 73 69 65 2e 22 29 3b 0a 20 20 20 20 20 20  aisie.");.      
39a0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
39b0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
39c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
39d0: 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 73 68   oGrammalecte.sh
39e0: 6f 77 4d 65 73 73 61 67 65 28 22 45 72 72 65 75  owMessage("Erreu
39f0: 72 2e 20 4c 65 20 6e 6f 64 65 20 73 75 72 20 6c  r. Le node sur l
3a00: 65 71 75 65 6c 20 76 6f 75 73 20 61 76 65 7a 20  equel vous avez 
3a10: 63 6c 69 71 75 c3 a9 20 6e e2 80 99 61 20 70 61  cliqu.. n...a pa
3a20: 73 20 70 75 20 c3 aa 74 72 65 20 69 64 65 6e 74  s pu ..tre ident
3a30: 69 66 69 c3 a9 2e 22 29 3b 0a 20 20 20 20 20 20  ifi...");.      
3a40: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
3a50: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
3a60: 20 20 20 2f 2f 20 72 65 73 63 61 6e 20 70 61 67     // rescan pag
3a70: 65 20 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 20 20  e command.      
3a80: 20 20 63 61 73 65 20 22 72 65 73 63 61 6e 50 61    case "rescanPa
3a90: 67 65 22 3a 0a 20 20 20 20 20 20 20 20 20 20 20  ge":.           
3aa0: 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e 72 65   oGrammalecte.re
3ab0: 73 63 61 6e 50 61 67 65 28 29 3b 0a 20 20 20 20  scanPage();.    
3ac0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
3ad0: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a         default:.
3ae0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
3af0: 6f 6c 65 2e 6c 6f 67 28 22 5b 43 6f 6e 74 65 6e  ole.log("[Conten
3b00: 74 20 73 63 72 69 70 74 5d 20 55 6e 6b 6e 6f 77  t script] Unknow
3b10: 6e 20 63 6f 6d 6d 61 6e 64 3a 20 22 20 2b 20 73  n command: " + s
3b20: 41 63 74 69 6f 6e 44 6f 6e 65 29 3b 0a 20 20 20  ActionDone);.   
3b30: 20 7d 0a 7d 29 3b 0a 0a 0a 2f 2a 0a 20 20 20 20   }.});.../*.    
3b40: 43 6f 6d 6d 75 6e 69 63 61 74 65 20 77 65 62 70  Communicate webp
3b50: 61 67 65 20 73 63 72 69 70 74 20 3c 3d 3e 20 57  age script <=> W
3b60: 65 62 45 78 74 65 6e 73 69 6f 6e 0a 20 20 20 20  ebExtension.    
3b70: 4c 61 20 6d c3 a9 74 68 6f 64 65 20 64 e2 80 99  La m..thode d...
3b80: 69 6e 6a 65 63 74 69 6f 6e 20 64 65 20 63 65 20  injection de ce 
3b90: 73 63 72 69 70 74 20 65 73 74 20 69 6d 70 6f 72  script est impor
3ba0: 74 61 6e 74 65 20 21 0a 0a 20 20 20 20 50 6f 75  tante !..    Pou
3bb0: 72 20 71 75 65 20 6c 61 20 70 61 67 65 20 77 65  r que la page we
3bc0: 62 20 70 75 69 73 73 65 20 65 6e 76 6f 79 65 72  b puisse envoyer
3bd0: 20 64 65 73 20 69 6e 66 6f 73 20 61 75 20 62 61   des infos au ba
3be0: 63 6b 67 72 6f 75 6e 64 0a 20 20 20 20 50 61 67  ckground.    Pag
3bf0: 65 20 77 65 62 20 3d 3e 20 53 63 72 69 70 74 20  e web => Script 
3c00: 69 6e 6a 65 63 74 c3 a9 20 3d 3e 20 43 6f 6e 74  inject.. => Cont
3c10: 65 6e 74 20 73 63 72 69 70 74 20 3d 3e 20 42 61  ent script => Ba
3c20: 63 6b 67 72 6f 75 6e 64 0a 20 20 20 20 50 6f 75  ckground.    Pou
3c30: 72 20 6c 61 20 72 c3 a9 70 6f 6e 73 65 2c 20 63  r la r..ponse, c
3c40: 65 20 73 6f 6e 74 20 6c 65 73 20 6d c3 aa 6d 65  e sont les m..me
3c50: 73 20 c3 a9 74 61 70 65 73 20 65 6e 20 73 65 6e  s ..tapes en sen
3c60: 73 20 69 6e 76 65 72 73 65 2e 0a 2a 2f 0a 6c 65  s inverse..*/.le
3c70: 74 20 78 53 63 72 69 70 74 4e 6f 64 65 20 3d 20  t xScriptNode = 
3c80: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45  document.createE
3c90: 6c 65 6d 65 6e 74 28 22 73 63 72 69 70 74 22 29  lement("script")
3ca0: 3b 0a 78 53 63 72 69 70 74 4e 6f 64 65 2e 73 72  ;.xScriptNode.sr
3cb0: 63 20 3d 20 62 72 6f 77 73 65 72 2e 65 78 74 65  c = browser.exte
3cc0: 6e 73 69 6f 6e 2e 67 65 74 55 52 4c 28 22 63 6f  nsion.getURL("co
3cd0: 6e 74 65 6e 74 5f 73 63 72 69 70 74 73 2f 65 76  ntent_scripts/ev
3ce0: 65 6e 74 2e 6a 73 22 29 3b 0a 64 6f 63 75 6d 65  ent.js");.docume
3cf0: 6e 74 2e 64 6f 63 75 6d 65 6e 74 45 6c 65 6d 65  nt.documentEleme
3d00: 6e 74 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  nt.appendChild(x
3d10: 53 63 72 69 70 74 4e 6f 64 65 29 3b 0a 0a 6c 65  ScriptNode);..le
3d20: 74 20 6e 4d 69 6e 20 3d 20 4d 61 74 68 2e 63 65  t nMin = Math.ce
3d30: 69 6c 28 30 29 3b 0a 6c 65 74 20 6e 4d 61 78 20  il(0);.let nMax 
3d40: 3d 20 4d 61 74 68 2e 66 6c 6f 6f 72 28 39 39 39  = Math.floor(999
3d50: 39 39 39 39 29 3b 0a 66 75 6e 63 74 69 6f 6e 20  9999);.function 
3d60: 75 6e 69 71 75 65 49 44 20 28 29 20 7b 0a 20 20  uniqueID () {.  
3d70: 20 20 72 65 74 75 72 6e 20 44 61 74 65 2e 6e 6f    return Date.no
3d80: 77 28 29 2e 74 6f 53 74 72 69 6e 67 28 33 36 29  w().toString(36)
3d90: 20 2b 20 22 2d 22 20 2b 20 28 4d 61 74 68 2e 66   + "-" + (Math.f
3da0: 6c 6f 6f 72 28 4d 61 74 68 2e 72 61 6e 64 6f 6d  loor(Math.random
3db0: 28 29 20 2a 20 28 6e 4d 61 78 20 2d 20 6e 4d 69  () * (nMax - nMi
3dc0: 6e 29 29 20 2b 20 6e 4d 69 6e 29 2e 74 6f 53 74  n)) + nMin).toSt
3dd0: 72 69 6e 67 28 33 36 29 3b 0a 7d 0a 0a 2f 2f 20  ring(36);.}..// 
3de0: 21 20 c3 89 63 6f 75 74 65 20 64 65 73 20 6d 65  ! ..coute des me
3df0: 73 73 61 67 65 73 20 76 65 6e 61 6e 74 20 64 75  ssages venant du
3e00: 20 73 63 72 69 70 74 20 69 6e 6a 65 63 74 c3 a9   script inject..
3e10: 0a 64 6f 63 75 6d 65 6e 74 2e 61 64 64 45 76 65  .document.addEve
3e20: 6e 74 4c 69 73 74 65 6e 65 72 28 22 47 72 61 6d  ntListener("Gram
3e30: 6d 61 6c 65 63 74 65 45 76 65 6e 74 22 2c 20 66  malecteEvent", f
3e40: 75 6e 63 74 69 6f 6e 20 28 65 76 65 6e 74 29 20  unction (event) 
3e50: 7b 0a 20 20 20 20 6c 65 74 20 6f 41 63 74 69 6f  {.    let oActio
3e60: 6e 46 72 6f 6d 50 61 67 65 20 3d 20 4a 53 4f 4e  nFromPage = JSON
3e70: 2e 70 61 72 73 65 28 65 76 65 6e 74 2e 64 65 74  .parse(event.det
3e80: 61 69 6c 29 3b 0a 20 20 20 20 2f 2f 63 6f 6e 73  ail);.    //cons
3e90: 6f 6c 65 2e 6c 6f 67 28 65 76 65 6e 74 29 3b 0a  ole.log(event);.
3ea0: 20 20 20 20 6c 65 74 20 73 54 65 78 74 20 3d 20      let sText = 
3eb0: 66 61 6c 73 65 3b 0a 20 20 20 20 6c 65 74 20 64  false;.    let d
3ec0: 49 6e 66 6f 20 3d 20 7b 7d 3b 0a 20 20 20 20 6c  Info = {};.    l
3ed0: 65 74 20 78 4e 6f 64 65 54 6f 50 61 72 73 65 20  et xNodeToParse 
3ee0: 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 69 66 20  = null;..    if 
3ef0: 28 6f 41 63 74 69 6f 6e 46 72 6f 6d 50 61 67 65  (oActionFromPage
3f00: 2e 69 66 72 61 6d 65 29 20 7b 0a 20 20 20 20 20  .iframe) {.     
3f10: 20 20 20 78 4e 6f 64 65 54 6f 50 61 72 73 65 20     xNodeToParse 
3f20: 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c  = document.getEl
3f30: 65 6d 65 6e 74 42 79 49 64 28 6f 41 63 74 69 6f  ementById(oActio
3f40: 6e 46 72 6f 6d 50 61 67 65 2e 69 66 72 61 6d 65  nFromPage.iframe
3f50: 29 2e 63 6f 6e 74 65 6e 74 57 69 6e 64 6f 77 2e  ).contentWindow.
3f60: 64 6f 63 75 6d 65 6e 74 2e 62 6f 64 79 3b 0a 20  document.body;. 
3f70: 20 20 20 7d 0a 20 20 20 20 69 66 20 28 6f 41 63     }.    if (oAc
3f80: 74 69 6f 6e 46 72 6f 6d 50 61 67 65 2e 65 6c 6d  tionFromPage.elm
3f90: 29 20 7b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64  ) {.        xNod
3fa0: 65 54 6f 50 61 72 73 65 20 3d 20 64 6f 63 75 6d  eToParse = docum
3fb0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
3fc0: 49 64 28 6f 41 63 74 69 6f 6e 46 72 6f 6d 50 61  Id(oActionFromPa
3fd0: 67 65 2e 65 6c 6d 29 3b 0a 20 20 20 20 20 20 20  ge.elm);.       
3fe0: 20 73 54 65 78 74 20 3d 20 78 4e 6f 64 65 54 6f   sText = xNodeTo
3ff0: 50 61 72 73 65 2e 74 61 67 4e 61 6d 65 20 3d 3d  Parse.tagName ==
4000: 20 22 54 45 58 54 41 52 45 41 22 20 3f 20 78 4e   "TEXTAREA" ? xN
4010: 6f 64 65 54 6f 50 61 72 73 65 2e 76 61 6c 75 65  odeToParse.value
4020: 20 3a 20 78 4e 6f 64 65 54 6f 50 61 72 73 65 2e   : xNodeToParse.
4030: 69 6e 6e 65 72 54 65 78 74 3b 0a 20 20 20 20 20  innerText;.     
4040: 20 20 20 64 49 6e 66 6f 20 3d 20 7b 20 73 54 65     dInfo = { sTe
4050: 78 74 41 72 65 61 49 64 3a 20 78 4e 6f 64 65 54  xtAreaId: xNodeT
4060: 6f 50 61 72 73 65 2e 69 64 20 7d 3b 0a 20 20 20  oParse.id };.   
4070: 20 7d 0a 20 20 20 20 69 66 20 28 6f 41 63 74 69   }.    if (oActi
4080: 6f 6e 46 72 6f 6d 50 61 67 65 2e 73 54 65 78 74  onFromPage.sText
4090: 54 6f 50 61 72 73 65 29 20 7b 0a 20 20 20 20 20  ToParse) {.     
40a0: 20 20 20 6f 47 72 61 6d 6d 61 6c 65 63 74 65 2e     oGrammalecte.
40b0: 73 74 61 72 74 47 43 50 61 6e 65 6c 28 78 4e 6f  startGCPanel(xNo
40c0: 64 65 54 6f 50 61 72 73 65 29 3b 0a 20 20 20 20  deToParse);.    
40d0: 20 20 20 20 78 47 72 61 6d 6d 61 6c 65 63 74 65      xGrammalecte
40e0: 50 6f 72 74 2e 70 6f 73 74 4d 65 73 73 61 67 65  Port.postMessage
40f0: 28 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ({.            s
4100: 43 6f 6d 6d 61 6e 64 3a 20 22 70 61 72 73 65 41  Command: "parseA
4110: 6e 64 53 70 65 6c 6c 63 68 65 63 6b 22 2c 0a 20  ndSpellcheck",. 
4120: 20 20 20 20 20 20 20 20 20 20 20 64 50 61 72 61             dPara
4130: 6d 3a 20 7b 20 73 54 65 78 74 3a 20 73 54 65 78  m: { sText: sTex
4140: 74 20 7c 7c 20 6f 41 63 74 69 6f 6e 46 72 6f 6d  t || oActionFrom
4150: 50 61 67 65 2e 73 54 65 78 74 54 6f 50 61 72 73  Page.sTextToPars
4160: 65 2c 20 73 43 6f 75 6e 74 72 79 3a 20 22 46 52  e, sCountry: "FR
4170: 22 2c 20 62 44 65 62 75 67 3a 20 66 61 6c 73 65  ", bDebug: false
4180: 2c 20 62 43 6f 6e 74 65 78 74 3a 20 66 61 6c 73  , bContext: fals
4190: 65 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20  e },.           
41a0: 20 64 49 6e 66 6f 3a 20 64 49 6e 66 6f 0a 20 20   dInfo: dInfo.  
41b0: 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a        });.    }.
41c0: 20 20 20 20 69 66 20 28 6f 41 63 74 69 6f 6e 46      if (oActionF
41d0: 72 6f 6d 50 61 67 65 2e 73 54 65 78 74 46 6f 72  romPage.sTextFor
41e0: 4c 65 78 69 63 6f 67 72 61 70 68 65 72 29 20 7b  Lexicographer) {
41f0: 0a 20 20 20 20 20 20 20 20 6f 47 72 61 6d 6d 61  .        oGramma
4200: 6c 65 63 74 65 2e 73 74 61 72 74 4c 78 67 50 61  lecte.startLxgPa
4210: 6e 65 6c 28 29 3b 0a 20 20 20 20 20 20 20 20 78  nel();.        x
4220: 47 72 61 6d 6d 61 6c 65 63 74 65 50 6f 72 74 2e  GrammalectePort.
4230: 70 6f 73 74 4d 65 73 73 61 67 65 28 7b 0a 20 20  postMessage({.  
4240: 20 20 20 20 20 20 20 20 20 20 73 43 6f 6d 6d 61            sComma
4250: 6e 64 3a 20 22 67 65 74 4c 69 73 74 4f 66 54 6f  nd: "getListOfTo
4260: 6b 65 6e 73 22 2c 0a 20 20 20 20 20 20 20 20 20  kens",.         
4270: 20 20 20 64 50 61 72 61 6d 3a 20 7b 20 73 54 65     dParam: { sTe
4280: 78 74 3a 20 73 54 65 78 74 20 7c 7c 20 6f 41 63  xt: sText || oAc
4290: 74 69 6f 6e 46 72 6f 6d 50 61 67 65 2e 73 54 65  tionFromPage.sTe
42a0: 78 74 46 6f 72 4c 65 78 69 63 6f 67 72 61 70 68  xtForLexicograph
42b0: 65 72 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20  er },.          
42c0: 20 20 64 49 6e 66 6f 3a 20 64 49 6e 66 6f 0a 20    dInfo: dInfo. 
42d0: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d         });.    }
42e0: 0a 7d 29 3b 0a 0a 6c 65 74 20 62 49 6e 6a 65 63  .});..let bInjec
42f0: 74 65 64 53 63 72 69 70 74 52 65 61 64 79 20 3d  tedScriptReady =
4300: 20 66 61 6c 73 65 3b 0a 6c 65 74 20 6c 42 75 66   false;.let lBuf
4310: 66 65 72 4d 73 67 20 3d 20 5b 5d 3b 0a 0a 2f 2f  ferMsg = [];..//
4320: 20 21 20 50 65 72 6d 65 74 20 64 e2 80 99 65 6e   ! Permet d...en
4330: 76 6f 79 65 72 20 64 65 73 20 6d 65 73 73 61 67  voyer des messag
4340: 65 73 20 76 65 72 73 20 6c 65 20 73 63 72 69 70  es vers le scrip
4350: 74 20 69 6e 6a 65 63 74 c3 a9 0a 2f 2f 20 28 70  t inject...// (p
4360: 65 75 74 20 61 75 73 73 69 20 c3 aa 74 72 65 20  eut aussi ..tre 
4370: 6c 75 20 70 61 72 20 75 6e 20 73 63 72 69 70 74  lu par un script
4380: 20 73 75 72 20 6c 61 20 70 61 67 65 20 77 65 62   sur la page web
4390: 29 0a 66 75 6e 63 74 69 6f 6e 20 73 65 6e 64 54  ).function sendT
43a0: 6f 57 65 62 70 61 67 65 20 28 6f 44 61 74 61 41  oWebpage (oDataA
43b0: 63 74 69 6f 6e 29 20 7b 0a 20 20 20 20 6c 65 74  ction) {.    let
43c0: 20 6f 44 61 74 61 54 6f 53 65 6e 64 20 3d 20 6f   oDataToSend = o
43d0: 44 61 74 61 41 63 74 69 6f 6e 3b 0a 20 20 20 20  DataAction;.    
43e0: 69 66 20 28 74 79 70 65 6f 66 20 6f 44 61 74 61  if (typeof oData
43f0: 54 6f 53 65 6e 64 2e 73 41 63 74 69 6f 6e 49 64  ToSend.sActionId
4400: 20 3d 3d 3d 20 22 75 6e 64 65 66 69 6e 65 64 22   === "undefined"
4410: 29 20 7b 0a 20 20 20 20 20 20 20 20 6f 44 61 74  ) {.        oDat
4420: 61 54 6f 53 65 6e 64 2e 73 41 63 74 69 6f 6e 49  aToSend.sActionI
4430: 64 20 3d 20 75 6e 69 71 75 65 49 44 28 29 3b 0a  d = uniqueID();.
4440: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 6f 44      }.    if (oD
4450: 61 74 61 41 63 74 69 6f 6e 2e 65 6c 6d 29 20 7b  ataAction.elm) {
4460: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6f 44  .        if (!oD
4470: 61 74 61 41 63 74 69 6f 6e 2e 65 6c 6d 2e 69 64  ataAction.elm.id
4480: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
4490: 6f 44 61 74 61 41 63 74 69 6f 6e 2e 65 6c 6d 2e  oDataAction.elm.
44a0: 69 64 20 3d 20 75 6e 69 71 75 65 49 44 28 29 3b  id = uniqueID();
44b0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
44c0: 20 20 20 6f 44 61 74 61 54 6f 53 65 6e 64 2e 65     oDataToSend.e
44d0: 6c 6d 20 3d 20 6f 44 61 74 61 41 63 74 69 6f 6e  lm = oDataAction
44e0: 2e 65 6c 6d 2e 69 64 3b 0a 20 20 20 20 7d 0a 0a  .elm.id;.    }..
44f0: 20 20 20 20 69 66 20 28 21 62 49 6e 6a 65 63 74      if (!bInject
4500: 65 64 53 63 72 69 70 74 52 65 61 64 79 29 20 7b  edScriptReady) {
4510: 0a 20 20 20 20 20 20 20 20 6c 42 75 66 66 65 72  .        lBuffer
4520: 4d 73 67 2e 70 75 73 68 28 6f 44 61 74 61 54 6f  Msg.push(oDataTo
4530: 53 65 6e 64 29 3b 0a 20 20 20 20 7d 20 65 6c 73  Send);.    } els
4540: 65 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 63 6f  e {.        //co
4550: 6e 73 6f 6c 65 2e 6c 6f 67 28 27 73 65 6e 64 54  nsole.log('sendT
4560: 6f 57 65 62 70 61 67 65 27 2c 20 6f 44 61 74 61  oWebpage', oData
4570: 54 6f 53 65 6e 64 29 3b 0a 20 20 20 20 20 20 20  ToSend);.       
4580: 20 6c 65 74 20 65 76 65 6e 74 47 72 61 6d 6d 61   let eventGramma
4590: 6c 65 63 74 65 20 3d 20 6e 65 77 20 43 75 73 74  lecte = new Cust
45a0: 6f 6d 45 76 65 6e 74 28 22 47 72 61 6d 6d 61 6c  omEvent("Grammal
45b0: 65 63 74 65 54 6f 50 61 67 65 22 2c 20 7b 20 64  ecteToPage", { d
45c0: 65 74 61 69 6c 3a 20 4a 53 4f 4e 2e 73 74 72 69  etail: JSON.stri
45d0: 6e 67 69 66 79 28 6f 44 61 74 61 54 6f 53 65 6e  ngify(oDataToSen
45e0: 64 29 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 64  d) });.        d
45f0: 6f 63 75 6d 65 6e 74 2e 64 69 73 70 61 74 63 68  ocument.dispatch
4600: 45 76 65 6e 74 28 65 76 65 6e 74 47 72 61 6d 6d  Event(eventGramm
4610: 61 6c 65 63 74 65 29 3b 0a 20 20 20 20 7d 0a 0a  alecte);.    }..
4620: 20 20 20 20 72 65 74 75 72 6e 20 6f 44 61 74 61      return oData
4630: 54 6f 53 65 6e 64 2e 73 41 63 74 69 6f 6e 49 64  ToSend.sActionId
4640: 3b 0a 7d 0a 0a 2f 2f 20 21 20 4c 65 73 20 6d 65  ;.}..// ! Les me
4650: 73 73 61 67 65 73 20 6e 65 20 70 65 75 76 65 6e  ssages ne peuven
4660: 74 20 c3 aa 74 72 65 20 65 6e 76 6f 79 c3 a9 73  t ..tre envoy..s
4670: 20 71 75 e2 80 99 61 70 72 c3 a8 73 20 6c e2 80   qu...apr..s l..
4680: 99 69 6e 6a 65 63 74 69 6f 6e 20 64 75 20 73 63  .injection du sc
4690: 72 69 70 74 0a 64 6f 63 75 6d 65 6e 74 2e 61 64  ript.document.ad
46a0: 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22  dEventListener("
46b0: 47 4c 49 6e 6a 65 63 74 65 64 53 63 72 69 70 74  GLInjectedScript
46c0: 49 73 52 65 61 64 79 22 2c 20 66 75 6e 63 74 69  IsReady", functi
46d0: 6f 6e 20 28 29 20 7b 0a 20 20 20 20 2f 2f 63 6f  on () {.    //co
46e0: 6e 73 6f 6c 65 2e 6c 6f 67 28 22 47 4c 49 6e 6a  nsole.log("GLInj
46f0: 65 63 74 65 64 53 63 72 69 70 74 49 73 52 65 61  ectedScriptIsRea
4700: 64 79 20 45 58 54 22 29 3b 0a 20 20 20 20 62 49  dy EXT");.    bI
4710: 6e 6a 65 63 74 65 64 53 63 72 69 70 74 52 65 61  njectedScriptRea
4720: 64 79 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 69  dy = true;.    i
4730: 66 20 28 6c 42 75 66 66 65 72 4d 73 67 2e 6c 65  f (lBufferMsg.le
4740: 6e 67 74 68 20 3e 20 30 29 20 7b 0a 20 20 20 20  ngth > 0) {.    
4750: 20 20 20 20 66 6f 72 20 28 63 6f 6e 73 74 20 6f      for (const o
4760: 44 61 74 61 54 6f 53 65 6e 64 20 6f 66 20 6c 42  DataToSend of lB
4770: 75 66 66 65 72 4d 73 67 29 20 7b 0a 20 20 20 20  ufferMsg) {.    
4780: 20 20 20 20 20 20 20 20 6c 65 74 20 65 76 65 6e          let even
4790: 74 47 72 61 6d 6d 61 6c 65 63 74 65 20 3d 20 6e  tGrammalecte = n
47a0: 65 77 20 43 75 73 74 6f 6d 45 76 65 6e 74 28 22  ew CustomEvent("
47b0: 47 72 61 6d 6d 61 6c 65 63 74 65 54 6f 50 61 67  GrammalecteToPag
47c0: 65 22 2c 20 7b 20 64 65 74 61 69 6c 3a 20 4a 53  e", { detail: JS
47d0: 4f 4e 2e 73 74 72 69 6e 67 69 66 79 28 6f 44 61  ON.stringify(oDa
47e0: 74 61 54 6f 53 65 6e 64 29 20 7d 29 3b 0a 20 20  taToSend) });.  
47f0: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
4800: 6e 74 2e 64 69 73 70 61 74 63 68 45 76 65 6e 74  nt.dispatchEvent
4810: 28 65 76 65 6e 74 47 72 61 6d 6d 61 6c 65 63 74  (eventGrammalect
4820: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
4830: 20 20 7d 0a 7d 29 3b 0a 0a 73 65 6e 64 54 6f 57    }.});..sendToW
4840: 65 62 70 61 67 65 28 7b 20 69 6e 69 74 3a 20 62  ebpage({ init: b
4850: 72 6f 77 73 65 72 2e 65 78 74 65 6e 73 69 6f 6e  rowser.extension
4860: 2e 67 65 74 55 52 4c 28 22 22 29 20 7d 29 3b 0a  .getURL("") });.