From 3245058ccb07b31b173ca95db7a8141b53d006a1 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Tue, 18 Apr 2017 11:30:55 -0400 Subject: [PATCH] Add a11y extensions, add [a11y] path, and allow MathJax to look for paths recursively. --- extensions/a11y/accessibility-menu.js | 1 + extensions/a11y/auto-collapse.js | 1 + extensions/a11y/collapsible.js | 1 + extensions/a11y/explorer.js | 1 + extensions/a11y/invalid_keypress.mp3 | Bin 0 -> 9030 bytes extensions/a11y/invalid_keypress.ogg | Bin 0 -> 5353 bytes extensions/a11y/mathjax-sre.js | 742 ++++++++++++++++ extensions/a11y/mathmaps/.htaccess | 3 + .../a11y/mathmaps/functions/algebra.json | 1 + .../a11y/mathmaps/functions/elementary.json | 1 + .../a11y/mathmaps/functions/hyperbolic.json | 1 + .../a11y/mathmaps/functions/trigonometry.json | 1 + extensions/a11y/mathmaps/mathmaps_ie.js | 1 + .../a11y/mathmaps/symbols/greek-capital.json | 1 + .../mathmaps/symbols/greek-mathfonts.json | 1 + .../a11y/mathmaps/symbols/greek-scripts.json | 1 + .../a11y/mathmaps/symbols/greek-small.json | 1 + .../a11y/mathmaps/symbols/greek-symbols.json | 1 + .../a11y/mathmaps/symbols/hebrew_letters.json | 1 + .../symbols/latin-lower-double-accent.json | 1 + .../mathmaps/symbols/latin-lower-normal.json | 1 + .../symbols/latin-lower-phonetic.json | 1 + .../symbols/latin-lower-single-accent.json | 1 + .../mathmaps/symbols/latin-mathfonts.json | 1 + .../a11y/mathmaps/symbols/latin-rest.json | 1 + .../symbols/latin-upper-double-accent.json | 1 + .../mathmaps/symbols/latin-upper-normal.json | 1 + .../symbols/latin-upper-single-accent.json | 1 + .../a11y/mathmaps/symbols/math_angles.json | 1 + .../a11y/mathmaps/symbols/math_arrows.json | 1 + .../mathmaps/symbols/math_characters.json | 1 + .../mathmaps/symbols/math_delimiters.json | 1 + .../a11y/mathmaps/symbols/math_digits.json | 1 + .../a11y/mathmaps/symbols/math_geometry.json | 1 + .../a11y/mathmaps/symbols/math_harpoons.json | 1 + .../mathmaps/symbols/math_non_characters.json | 1 + .../a11y/mathmaps/symbols/math_symbols.json | 1 + .../mathmaps/symbols/math_whitespace.json | 1 + .../a11y/mathmaps/symbols/other_stars.json | 1 + extensions/a11y/mathmaps/units/energy.json | 1 + extensions/a11y/mathmaps/units/length.json | 1 + extensions/a11y/mathmaps/units/memory.json | 1 + extensions/a11y/mathmaps/units/other.json | 1 + extensions/a11y/mathmaps/units/speed.json | 1 + .../a11y/mathmaps/units/temperature.json | 1 + extensions/a11y/mathmaps/units/time.json | 1 + extensions/a11y/mathmaps/units/volume.json | 1 + extensions/a11y/mathmaps/units/weight.json | 1 + extensions/a11y/semantic-enrich.js | 1 + extensions/a11y/wgxpath.install.js | 77 ++ unpacked/MathJax.js | 22 +- unpacked/config/AM_CHTML-full.js | 4 +- unpacked/config/AM_CHTML.js | 4 +- unpacked/config/AM_HTMLorMML-full.js | 4 +- unpacked/config/AM_HTMLorMML.js | 4 +- unpacked/config/AM_SVG-full.js | 4 +- unpacked/config/AM_SVG.js | 4 +- unpacked/config/Accessible-full.js | 4 +- unpacked/config/Accessible.js | 4 +- unpacked/config/MML_CHTML-full.js | 4 +- unpacked/config/MML_CHTML.js | 4 +- unpacked/config/MML_HTMLorMML-full.js | 4 +- unpacked/config/MML_HTMLorMML.js | 4 +- unpacked/config/MML_SVG-full.js | 4 +- unpacked/config/MML_SVG.js | 4 +- unpacked/config/TeX-AMS-MML_HTMLorMML-full.js | 4 +- unpacked/config/TeX-AMS-MML_HTMLorMML.js | 4 +- unpacked/config/TeX-AMS-MML_SVG-full.js | 4 +- unpacked/config/TeX-AMS-MML_SVG.js | 4 +- unpacked/config/TeX-AMS_CHTML-full.js | 4 +- unpacked/config/TeX-AMS_CHTML.js | 4 +- unpacked/config/TeX-AMS_HTML-full.js | 4 +- unpacked/config/TeX-AMS_HTML.js | 4 +- unpacked/config/TeX-AMS_SVG-full.js | 4 +- unpacked/config/TeX-AMS_SVG.js | 4 +- unpacked/config/TeX-MML-AM_CHTML-full.js | 4 +- unpacked/config/TeX-MML-AM_CHTML.js | 4 +- unpacked/config/TeX-MML-AM_HTMLorMML-full.js | 4 +- unpacked/config/TeX-MML-AM_HTMLorMML.js | 4 +- unpacked/config/TeX-MML-AM_SVG-full.js | 4 +- unpacked/config/TeX-MML-AM_SVG.js | 4 +- .../extensions/a11y/accessibility-menu.js | 182 ++++ unpacked/extensions/a11y/auto-collapse.js | 498 +++++++++++ unpacked/extensions/a11y/collapsible.js | 741 ++++++++++++++++ unpacked/extensions/a11y/explorer.js | 809 ++++++++++++++++++ unpacked/extensions/a11y/invalid_keypress.mp3 | Bin 0 -> 9030 bytes unpacked/extensions/a11y/invalid_keypress.ogg | Bin 0 -> 5353 bytes unpacked/extensions/a11y/mathjax-sre.js | 742 ++++++++++++++++ unpacked/extensions/a11y/mathmaps/.htaccess | 3 + .../a11y/mathmaps/functions/algebra.json | 1 + .../a11y/mathmaps/functions/elementary.json | 1 + .../a11y/mathmaps/functions/hyperbolic.json | 1 + .../a11y/mathmaps/functions/trigonometry.json | 1 + .../extensions/a11y/mathmaps/mathmaps_ie.js | 1 + .../a11y/mathmaps/symbols/greek-capital.json | 1 + .../mathmaps/symbols/greek-mathfonts.json | 1 + .../a11y/mathmaps/symbols/greek-scripts.json | 1 + .../a11y/mathmaps/symbols/greek-small.json | 1 + .../a11y/mathmaps/symbols/greek-symbols.json | 1 + .../a11y/mathmaps/symbols/hebrew_letters.json | 1 + .../symbols/latin-lower-double-accent.json | 1 + .../mathmaps/symbols/latin-lower-normal.json | 1 + .../symbols/latin-lower-phonetic.json | 1 + .../symbols/latin-lower-single-accent.json | 1 + .../mathmaps/symbols/latin-mathfonts.json | 1 + .../a11y/mathmaps/symbols/latin-rest.json | 1 + .../symbols/latin-upper-double-accent.json | 1 + .../mathmaps/symbols/latin-upper-normal.json | 1 + .../symbols/latin-upper-single-accent.json | 1 + .../a11y/mathmaps/symbols/math_angles.json | 1 + .../a11y/mathmaps/symbols/math_arrows.json | 1 + .../mathmaps/symbols/math_characters.json | 1 + .../mathmaps/symbols/math_delimiters.json | 1 + .../a11y/mathmaps/symbols/math_digits.json | 1 + .../a11y/mathmaps/symbols/math_geometry.json | 1 + .../a11y/mathmaps/symbols/math_harpoons.json | 1 + .../mathmaps/symbols/math_non_characters.json | 1 + .../a11y/mathmaps/symbols/math_symbols.json | 1 + .../mathmaps/symbols/math_whitespace.json | 1 + .../a11y/mathmaps/symbols/other_stars.json | 1 + .../a11y/mathmaps/units/energy.json | 1 + .../a11y/mathmaps/units/length.json | 1 + .../a11y/mathmaps/units/memory.json | 1 + .../extensions/a11y/mathmaps/units/other.json | 1 + .../extensions/a11y/mathmaps/units/speed.json | 1 + .../a11y/mathmaps/units/temperature.json | 1 + .../extensions/a11y/mathmaps/units/time.json | 1 + .../a11y/mathmaps/units/volume.json | 1 + .../a11y/mathmaps/units/weight.json | 1 + unpacked/extensions/a11y/semantic-enrich.js | 206 +++++ unpacked/extensions/a11y/wgxpath.install.js | 77 ++ 131 files changed, 4239 insertions(+), 68 deletions(-) create mode 100644 extensions/a11y/accessibility-menu.js create mode 100644 extensions/a11y/auto-collapse.js create mode 100644 extensions/a11y/collapsible.js create mode 100644 extensions/a11y/explorer.js create mode 100644 extensions/a11y/invalid_keypress.mp3 create mode 100755 extensions/a11y/invalid_keypress.ogg create mode 100644 extensions/a11y/mathjax-sre.js create mode 100644 extensions/a11y/mathmaps/.htaccess create mode 100644 extensions/a11y/mathmaps/functions/algebra.json create mode 100644 extensions/a11y/mathmaps/functions/elementary.json create mode 100644 extensions/a11y/mathmaps/functions/hyperbolic.json create mode 100644 extensions/a11y/mathmaps/functions/trigonometry.json create mode 100644 extensions/a11y/mathmaps/mathmaps_ie.js create mode 100644 extensions/a11y/mathmaps/symbols/greek-capital.json create mode 100644 extensions/a11y/mathmaps/symbols/greek-mathfonts.json create mode 100644 extensions/a11y/mathmaps/symbols/greek-scripts.json create mode 100644 extensions/a11y/mathmaps/symbols/greek-small.json create mode 100644 extensions/a11y/mathmaps/symbols/greek-symbols.json create mode 100644 extensions/a11y/mathmaps/symbols/hebrew_letters.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-lower-double-accent.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-lower-normal.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-lower-phonetic.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-lower-single-accent.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-mathfonts.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-rest.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-upper-double-accent.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-upper-normal.json create mode 100644 extensions/a11y/mathmaps/symbols/latin-upper-single-accent.json create mode 100644 extensions/a11y/mathmaps/symbols/math_angles.json create mode 100644 extensions/a11y/mathmaps/symbols/math_arrows.json create mode 100644 extensions/a11y/mathmaps/symbols/math_characters.json create mode 100644 extensions/a11y/mathmaps/symbols/math_delimiters.json create mode 100644 extensions/a11y/mathmaps/symbols/math_digits.json create mode 100644 extensions/a11y/mathmaps/symbols/math_geometry.json create mode 100644 extensions/a11y/mathmaps/symbols/math_harpoons.json create mode 100644 extensions/a11y/mathmaps/symbols/math_non_characters.json create mode 100644 extensions/a11y/mathmaps/symbols/math_symbols.json create mode 100644 extensions/a11y/mathmaps/symbols/math_whitespace.json create mode 100644 extensions/a11y/mathmaps/symbols/other_stars.json create mode 100644 extensions/a11y/mathmaps/units/energy.json create mode 100644 extensions/a11y/mathmaps/units/length.json create mode 100644 extensions/a11y/mathmaps/units/memory.json create mode 100644 extensions/a11y/mathmaps/units/other.json create mode 100644 extensions/a11y/mathmaps/units/speed.json create mode 100644 extensions/a11y/mathmaps/units/temperature.json create mode 100644 extensions/a11y/mathmaps/units/time.json create mode 100644 extensions/a11y/mathmaps/units/volume.json create mode 100644 extensions/a11y/mathmaps/units/weight.json create mode 100644 extensions/a11y/semantic-enrich.js create mode 100644 extensions/a11y/wgxpath.install.js create mode 100644 unpacked/extensions/a11y/accessibility-menu.js create mode 100644 unpacked/extensions/a11y/auto-collapse.js create mode 100644 unpacked/extensions/a11y/collapsible.js create mode 100644 unpacked/extensions/a11y/explorer.js create mode 100644 unpacked/extensions/a11y/invalid_keypress.mp3 create mode 100755 unpacked/extensions/a11y/invalid_keypress.ogg create mode 100644 unpacked/extensions/a11y/mathjax-sre.js create mode 100644 unpacked/extensions/a11y/mathmaps/.htaccess create mode 100644 unpacked/extensions/a11y/mathmaps/functions/algebra.json create mode 100644 unpacked/extensions/a11y/mathmaps/functions/elementary.json create mode 100644 unpacked/extensions/a11y/mathmaps/functions/hyperbolic.json create mode 100644 unpacked/extensions/a11y/mathmaps/functions/trigonometry.json create mode 100644 unpacked/extensions/a11y/mathmaps/mathmaps_ie.js create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/greek-capital.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/greek-mathfonts.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/greek-scripts.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/greek-small.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/greek-symbols.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/hebrew_letters.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-lower-double-accent.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-lower-normal.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-lower-phonetic.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-lower-single-accent.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-mathfonts.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-rest.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-upper-double-accent.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-upper-normal.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/latin-upper-single-accent.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_angles.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_arrows.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_characters.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_delimiters.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_digits.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_geometry.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_harpoons.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_non_characters.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_symbols.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/math_whitespace.json create mode 100644 unpacked/extensions/a11y/mathmaps/symbols/other_stars.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/energy.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/length.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/memory.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/other.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/speed.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/temperature.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/time.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/volume.json create mode 100644 unpacked/extensions/a11y/mathmaps/units/weight.json create mode 100644 unpacked/extensions/a11y/semantic-enrich.js create mode 100644 unpacked/extensions/a11y/wgxpath.install.js diff --git a/extensions/a11y/accessibility-menu.js b/extensions/a11y/accessibility-menu.js new file mode 100644 index 000000000..546608e24 --- /dev/null +++ b/extensions/a11y/accessibility-menu.js @@ -0,0 +1 @@ +!function(a,b){var c,d,e=a.config.menuSettings,f=Function.prototype.bind?function(a,b){return a.bind(b)}:function(a,b){return function(){a.apply(b,arguments)}},g=Object.keys||function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},h=MathJax.Ajax.config.path;h.a11y||(h.a11y=a.config.root+"/extensions/a11y");var i=b["accessibility-menu"]={version:"1.2.0",prefix:"",default:{},modules:[],MakeOption:function(a){return i.prefix+a},GetOption:function(a){return e[i.MakeOption(a)]},AddDefaults:function(){for(var a,b=g(i.default),c=0;a=b[c];c++){var d=i.MakeOption(a);void 0===e[d]&&(e[d]=i.default[a])}},AddMenu:function(){for(var a,b=Array(this.modules.length),e=0;a=this.modules[e];e++)b[e]=a.placeHolder;var f=d.FindId("Accessibility");if(f)b.unshift(c.RULE()),f.submenu.items.push.apply(f.submenu.items,b);else{var g=(d.FindId("Settings","Renderer")||{}).submenu;g&&(b.unshift(c.RULE()),b.unshift(g.items.pop()),b.unshift(g.items.pop())),b.unshift("Accessibility");var f=c.SUBMENU.apply(c.SUBMENU,b),h=d.IndexOfId("Locale");h?d.items.splice(h,0,f):d.items.push(c.RULE(),f)}},Register:function(a){i.default[a.option]=!1,i.modules.push(a)},Startup:function(){c=MathJax.Menu.ITEM,d=MathJax.Menu.menu;for(var a,b=0;a=this.modules[b];b++)a.CreateMenu();this.AddMenu()},LoadExtensions:function(){for(var b=[],c=0;module=this.modules[c];c++)e[module.option]&&b.push(module.module);return b.length?a.Startup.loadArray(b):null}},j=MathJax.Extension.ModuleLoader=MathJax.Object.Subclass({option:"",name:["",""],module:"",placeHolder:null,submenu:!1,extension:null,Init:function(a,b,c,d,e){this.option=a,this.name=[b.replace(/ /g,""),b],this.module=c,this.extension=d,this.submenu=e||!1},CreateMenu:function(){var a=f(this.Load,this);this.submenu?this.placeHolder=c.SUBMENU(this.name,c.CHECKBOX(["Activate","Activate"],i.MakeOption(this.option),{action:a}),c.RULE(),c.COMMAND(["OptionsWhenActive","(Options when Active)"],null,{disabled:!0})):this.placeHolder=c.CHECKBOX(this.name,i.MakeOption(this.option),{action:a})},Load:function(){a.Queue(["Require",MathJax.Ajax,this.module,["Enable",this]])},Enable:function(a){var b=MathJax.Extension[this.extension];b&&(b.Enable(!0,!0),MathJax.Menu.saveCookie())}});i.Register(j("collapsible","Collapsible Math","[a11y]/collapsible.js","collapsible")),i.Register(j("autocollapse","Auto Collapse","[a11y]/auto-collapse.js","auto-collapse")),i.Register(j("explorer","Explorer","[a11y]/explorer.js","explorer",!0)),i.AddDefaults(),a.Register.StartupHook("End Extensions",function(){a.Register.StartupHook("MathMenu Ready",function(){i.Startup(),a.Startup.signal.Post("Accessibility Menu Ready")},5)},5),MathJax.Callback.Queue(["LoadExtensions",i],["loadComplete",MathJax.Ajax,"[a11y]/accessibility-menu.js"])}(MathJax.Hub,MathJax.Extension); \ No newline at end of file diff --git a/extensions/a11y/auto-collapse.js b/extensions/a11y/auto-collapse.js new file mode 100644 index 000000000..5dcb3de5c --- /dev/null +++ b/extensions/a11y/auto-collapse.js @@ -0,0 +1 @@ +!function(a){var b=a.config.menuSettings,c={},d=MathJax.Ajax.config.path;d.a11y||(d.a11y=a.config.root+"/extensions/a11y");var e=MathJax.Extension["auto-collapse"]={version:"1.2.0",config:a.CombineConfig("auto-collapse",{disabled:!1}),dependents:[],Enable:function(d,e){b.autocollapse=!0,e&&(c.autocollapse=!0),this.config.disabled=!1,MathJax.Extension.collapsible.Enable(!1,e),d&&a.Queue(["Reprocess",a],["CollapseWideMath",this])},Disable:function(d,e){b.autocollapse=!1,e&&(c.autocollapse=!1),this.config.disabled=!0;for(var f=this.dependents.length-1;f>=0;f--){var g=this.dependents[f];g.Disable&&g.Disable(!1,e)}d&&a.Queue(["Rerender",a])},Dependent:function(a){this.dependents.push(a)},Startup:function(){var b=MathJax.Extension.collapsible;b&&b.Dependent(this),a.postInputHooks.Add(["Filter",e],150),a.Queue(function(){return e.CollapseWideMath()}),window.addEventListener?window.addEventListener("resize",e.resizeHandler,!1):window.attachEvent?window.attachEvent("onresize",e.resizeHandler):window.onresize=e.resizeHandler},Filter:function(a,b,c){a.enriched&&!this.config.disabled&&("block"===a.root.Get("display")||c.parentNode.childNodes.length<=3)&&(a.root.SRE={action:this.Actions(a.root)})},Actions:function(a){var b=[];return this.getActions(a,0,b),this.sortActions(b)},getActions:function(a,b,c){if(!a.isToken&&a.data){b++;for(var d=0,e=a.data.length;db?1:0},CollapseWideMath:function(b){if(!this.config.disabled){this.GetContainerWidths(b);var c=a.getAllJax(b),d={collapse:[],jax:c,m:c.length,i:0,changed:!1};return this.collapseState(d)}},collapseState:function(b){for(var c=b.collapse;b.ie.M)){var f=this.getActionWidths(d,b);if(f)return f;this.collapseActions(e,b),b.changed&&c.push(d.SourceElement())}b.i++}if(0!==c.length)return 1===c.length&&(c=c[0]),a.Rerender(c)},collapseActions:function(a,b){for(var c=a.width,d=c,e=1e6,f=a.action.length-1;f>=0;f--){var g=a.action[f],h=g.selection;c>a.cwidth?(g.selection=1,d=g.SREwidth,e=c):g.selection=2,c=g.SREwidth,a.DOMupdate?document.getElementById(g.id).setAttribute("selection",g.selection):g.selection!==h&&(b.changed=!0)}a.m=d,a.M=e},getActionWidths:function(a,b){if(!a.root.SRE.actionWidths){MathJax.OutputJax[a.outputJax].getMetrics(a);try{this.computeActionWidths(a)}catch(a){if(!a.restart)throw a;return MathJax.Callback.After(["collapseState",this,b],a.restart)}b.changed=!0}return null},computeActionWidths:function(a){var b,c=a.root.SRE,d=c.action,e={};for(c.width=a.sreGetRootWidth(e),b=d.length-1;b>=0;b--)d[b].selection=2;for(b=d.length-1;b>=0;b--){var f=d[b];null==f.SREwidth&&(f.selection=1,f.SREwidth=a.sreGetActionWidth(e,f))}c.actionWidths=!0},GetContainerWidths:function(b){var c,d,e,f,g,h=a.getAllJax(b),i=MathJax.HTML.Element("span",{style:{display:"block"}}),j=[];for(c=0,d=h.length;c=0;f--){var g=this.dependents[f];g.Disable&&g.Disable(!1,e)}b&&a.Queue(["Reprocess",a])},Dependent:function(a){this.dependents.push(a)},Startup:function(){b=MathJax.ElementJax.mml;var c=MathJax.Extension["semantic-enrich"];c&&c.Dependent(this),a.postInputHooks.Add(["Filter",h],100)},Filter:function(a,b,c){a.enriched&&!this.config.disabled&&(a.root=a.root.Collapse(),a.root.inputID=c.id)},Marker:function(a){return b.mtext("\u25c2"+a+"\u25b8").With({mathcolor:"blue",attr:{},attrNames:[]})},MakeAction:function(a,c){var d=b.maction(a).With({id:this.getActionID(),actiontype:"toggle",complexity:a.getComplexity(),collapsible:!0,attrNames:["id","actiontype","selection",f],attr:{},selection:2});if(d.attr[f]=d.complexity,"math"===c.type){for(var e,g=b.mrow().With({data:c.data,complexity:c.complexity,attrNames:[],attr:{}}),h=c.attrNames.length-1;e=c.attrNames[h];h--)"data-semantic-"===e.substr(0,14)&&(g.attr[e]=c.attr[e],g.attrNames.push(e),delete c.attr[e],c.attrNames.splice(h,1));g.complexity=c.complexity,d.Append(g),c.data=[],c.Append(d),c.complexity=d.complexity,d=c}else d.Append(c);return d},actionID:1,getActionID:function(){return"MJX-Collapse-"+this.actionID++},Collapse:function(a){a.getComplexity();var b=(a.attr||{})["data-semantic-type"];if(b)if(this["Collapse_"+b])a=this["Collapse_"+b](a);else if(this.COLLAPSE[b]&&this.MARKER[b]){var c=a.attr["data-semantic-role"],d=this.COLLAPSE[b];if("number"!=typeof d&&(d=d[c]||d.default),a.complexity>d){var e=this.MARKER[b];"string"!=typeof e&&(e=e[c]||e.default),a=this.MakeAction(this.Marker(e),a)}}return a},UncollapseChild:function(a,b,c){if(null==c&&(c=1),this.SplitAttribute(a,"children").length===c){var d=1===a.data.length&&a.data[0].inferred?a.data[0]:a;if(d&&d.data[b]&&d.data[b].collapsible)return d.SetData(b,d.data[b].data[1]),a.complexity=d.complexity=null,a.getComplexity(),1}return 0},FindChildText:function(a,b){var c=this.FindChild(a,b);return c?(c.CoreMO()||c).data.join(""):"?"},FindChild:function(a,b){if(a){if(a.attr&&a.attr["data-semantic-id"]===b)return a;if(!a.isToken)for(var c=0,d=a.data.length;cthis.COLLAPSE.fenced&&"leftright"===a.attr["data-semantic-role"]){var b=a.data[0].data.join("")+a.data[a.data.length-1].data.join("");a=this.MakeAction(this.Marker(b),a)}return a},Collapse_appl:function(a){if(this.UncollapseChild(a,2,2)){var b=this.MARKER.appl;b=b[a.attr["data-semantic-role"]]||b.default,a=this.MakeAction(this.Marker(b),a)}return a},Collapse_sqrt:function(a){return this.UncollapseChild(a,0),a.complexity>this.COLLAPSE.sqrt&&(a=this.MakeAction(this.Marker(this.MARKER.sqrt),a)),a},Collapse_root:function(a){return this.UncollapseChild(a,0),a.complexity>this.COLLAPSE.sqrt&&(a=this.MakeAction(this.Marker(this.MARKER.sqrt),a)),a},Collapse_enclose:function(a){if(1===this.SplitAttribute(a,"children").length){var b=1===a.data.length&&a.data[0].inferred?a.data[0]:a;if(b.data[0]&&b.data[0].collapsible){var c=b.data[0];b.SetData(0,c.data[1]),c.SetData(1,a),a=c}}return a},Collapse_bigop:function(a){if(a.complexity>this.COLLAPSE.bigop||"mo"!==a.data[0].type){var b=this.SplitAttribute(a,"content").pop(),c=h.FindChildText(a,b);a=this.MakeAction(this.Marker(c),a)}return a},Collapse_integral:function(a){if(a.complexity>this.COLLAPSE.integral||"mo"!==a.data[0].type){var b=this.SplitAttribute(a,"content")[0],c=h.FindChildText(a,b);a=this.MakeAction(this.Marker(c),a)}return a},Collapse_relseq:function(a){if(a.complexity>this.COLLAPSE.relseq){var b=this.SplitAttribute(a,"content"),c=h.FindChildText(a,b[0]);b.length>1&&(c+="\u22ef"),a=this.MakeAction(this.Marker(c),a)}return a},Collapse_multirel:function(a){if(a.complexity>this.COLLAPSE.multirel){var b=this.SplitAttribute(a,"content"),c=h.FindChildText(a,b[0])+"\u22ef";a=this.MakeAction(this.Marker(c),a)}return a},Collapse_superscript:function(a){return this.UncollapseChild(a,0,2),a.complexity>this.COLLAPSE.superscript&&(a=this.MakeAction(this.Marker(this.MARKER.superscript),a)),a},Collapse_subscript:function(a){return this.UncollapseChild(a,0,2),a.complexity>this.COLLAPSE.subscript&&(a=this.MakeAction(this.Marker(this.MARKER.subscript),a)),a},Collapse_subsup:function(a){return this.UncollapseChild(a,0,3),a.complexity>this.COLLAPSE.subsup&&(a=this.MakeAction(this.Marker(this.MARKER.subsup),a)),a}};a.Register.StartupHook("End Extensions",function(){null==c.collapsible?c.collapsible=!h.config.disabled:h.config.disabled=!c.collapsible,a.Register.StartupHook("MathMenu Ready",function(){d=MathJax.Menu.cookie;var a,b=function(a){h[c.collapsible?"Enable":"Disable"](!0,!0),MathJax.Menu.saveCookie()},e=MathJax.Menu.ITEM,f=MathJax.Menu.menu,g=e.CHECKBOX(["CollapsibleMath","Collapsible Math"],"collapsible",{action:b}),i=(f.FindId("Accessibility")||{}).submenu;i?(a=i.IndexOfId("CollapsibleMath"),null!==a?i.items[a]=g:i.items.push(e.RULE(),g)):(a=f.IndexOfId("About"),f.items.splice(a,0,g,e.RULE()))},15)},15)}(MathJax.Hub),MathJax.Ajax.Require("[a11y]/semantic-enrich.js"),MathJax.Hub.Register.StartupHook("Semantic Enrich Ready",function(){var a=MathJax.ElementJax.mml,b=MathJax.Extension.collapsible,c=b.COMPLEXITY,d=b.COMPLEXATTR;b.Startup(),a.mbase.Augment({Collapse:function(){return b.Collapse(this)},getComplexity:function(){if(null==this.complexity){var a=0;if(this.isToken)a=c.TEXT*this.data.join("").length+c.TOKEN;else{for(var b=0,e=this.data.length;b1&&(a+=e*c.CHILD)}!this.attrNames||"complexity"in this||this.attrNames.push(d),this.attr&&(this.attr[d]=a),this.complexity=a}return this.complexity},reportComplexity:function(){!this.attr||!this.attrNames||d in this.attr||(this.attrNames.push(d),this.attr[d]=this.complexity)}}),a.mfrac.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity*=c.SCRIPT,this.complexity+=c.FRACTION,this.attr[d]=this.complexity),this.complexity}}),a.msqrt.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity+=c.SQRT,this.attr[d]=this.complexity),this.complexity}}),a.mroot.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity-=(1-c.SCRIPT)*this.data[1].getComplexity(),this.complexity+=c.SQRT,this.attr[d]=this.complexity),this.complexity}}),a.msubsup.Augment({getComplexity:function(){if(null==this.complexity){var a=0;this.data[this.sub]&&(a=this.data[this.sub].getComplexity()+c.CHILD),this.data[this.sup]&&(a=Math.max(this.data[this.sup].getComplexity(),a)),a*=c.SCRIPT,this.data[this.sub]&&(a+=c.CHILD),this.data[this.sup]&&(a+=c.CHILD),this.data[this.base]&&(a+=this.data[this.base].getComplexity()+c.CHILD),this.complexity=a+c.SUBSUP,this.reportComplexity()}return this.complexity}}),a.munderover.Augment({getComplexity:function(){if(null==this.complexity){var a=0;this.data[this.sub]&&(a=this.data[this.sub].getComplexity()+c.CHILD),this.data[this.sup]&&(a=Math.max(this.data[this.sup].getComplexity(),a)),a*=c.SCRIPT,this.data[this.base]&&(a=Math.max(this.data[this.base].getComplexity(),a)),this.data[this.sub]&&(a+=c.CHILD),this.data[this.sup]&&(a+=c.CHILD),this.data[this.base]&&(a+=c.CHILD),this.complexity=a+c.UNDEROVER,this.reportComplexity()}return this.complexity}}),a.mphantom.Augment({getComplexity:function(){return this.complexity=c.PHANTOM,this.reportComplexity(),this.complexity}}),a.ms.Augment({getComplexity:function(){return this.SUPER(arguments).getComplexity.call(this),this.complexity+=this.Get("lquote").length*c.TEXT,this.complexity+=this.Get("rquote").length*c.TEXT,this.attr[d]=this.complexity,this.complexity}}),a.menclose.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity+=c.ACTION,this.attr[d]=this.complexity),this.complexity}}),a.maction.Augment({getComplexity:function(){return this.complexity=(this.collapsible?this.data[0]:this.selected()).getComplexity(),this.reportComplexity(),this.complexity}}),a.semantics.Augment({getComplexity:function(){return null==this.complexity&&(this.complexity=this.data[0]?this.data[0].getComplexity():0,this.reportComplexity()),this.complexity}}),a["annotation-xml"].Augment({getComplexity:function(){return this.complexity=c.XML,this.reportComplexity(),this.complexity}}),a.annotation.Augment({getComplexity:function(){return this.complexity=c.XML,this.reportComplexity(),this.complexity}}),a.mglyph.Augment({getComplexity:function(){return this.complexity=c.GLYPH,this.reportComplexity(),this.complexity}}),MathJax.Hub.Startup.signal.Post("Collapsible Ready"),MathJax.Ajax.loadComplete("[a11y]/collapsible.js")}); \ No newline at end of file diff --git a/extensions/a11y/explorer.js b/extensions/a11y/explorer.js new file mode 100644 index 000000000..0e527c964 --- /dev/null +++ b/extensions/a11y/explorer.js @@ -0,0 +1 @@ +MathJax.Hub.Register.StartupHook("Sre Ready",function(){var a,b,c=MathJax.Hub.config.menuSettings,d={};MathJax.Hub.Register.StartupHook("MathEvents Ready",function(){a=MathJax.Extension.MathEvents.Event.False,b=MathJax.Extension.MathEvents.Event.KEY});var e=MathJax.Extension.explorer={version:"1.2.0",dependents:[],default:{walker:"syntactic",highlight:"none",background:"blue",foreground:"black",speech:!0,generation:"lazy",subtitle:!1,ruleset:"mathspeak-default"},eagerComplexity:80,prefix:"Assistive-",hook:null,oldrules:null,addMenuOption:function(a,b){c[e.prefix+a]=b},addDefaults:function(){for(var a,b=MathJax.Hub.CombineConfig("explorer",e.default),d=Object.keys(b),f=0;a=d[f];f++)void 0===c[e.prefix+a]&&e.addMenuOption(a,b[a]);e.setSpeechOption(),g.Reset()},setOption:function(a,b){c[e.prefix+a]!==b&&(e.addMenuOption(a,b),g.Reset())},getOption:function(a){return c[e.prefix+a]},speechOption:function(a){e.oldrules!==a.value&&(e.setSpeechOption(),g.Regenerate())},setSpeechOption:function(){var a=c[e.prefix+"ruleset"],b=a.split("-");sre.System.getInstance().setupEngine({domain:e.Domain(b[0]),style:b[1],rules:e.RuleSet(b[0])}),e.oldrules=a},Domain:function(a){switch(a){case"chromevox":return"default";case"mathspeak":default:return"mathspeak"}},RuleSet:function(a){switch(a){case"chromevox":return["AbstractionRules","SemanticTreeRules"];case"mathspeak":default:return["AbstractionRules","MathspeakRules"]}},hook:null,Enable:function(a,b){c.explorer=!0,b&&(d.explorer=!0),MathJax.Extension.collapsible.Enable(!1,b),MathJax.Extension.AssistiveMML&&(MathJax.Extension.AssistiveMML.config.disabled=!0,c.assistiveMML=!1,b&&(d.assistiveMML=!1)),this.DisableMenus(!1),this.hook||(this.hook=MathJax.Hub.Register.MessageHook("New Math",["Register",this.Explorer])),a&&MathJax.Hub.Queue(["Reprocess",MathJax.Hub])},Disable:function(a,b){c.explorer=!1,b&&(d.explorer=!1),this.DisableMenus(!0),this.hook&&(MathJax.Hub.UnRegister.MessageHook(this.hook),this.hook=null);for(var e=this.dependents.length-1;e>=0;e--){var f=this.dependents[e];f.Disable&&f.Disable(!1,b)}},DisableMenus:function(a){if(MathJax.Menu){var b=MathJax.Menu.menu.FindId("Accessibility","Explorer");if(b){b=b.submenu;for(var d,f=b.items,g=2;d=f[g];g++)d.disabled=a;a||!b.FindId("SpeechOutput")||c[e.prefix+"speech"]||(b.FindId("Subtitles").disabled=!0,b.FindId("Generation").disabled=!0)}}},Dependent:function(a){this.dependents.push(a)}},f=MathJax.Object.Subclass({div:null,inner:null,Init:function(){this.div=f.Create("assertive"),this.inner=MathJax.HTML.addElement(this.div,"div")},Add:function(){f.added||(document.body.appendChild(this.div),f.added=!0)},Show:function(a,b){this.div.classList.add("MJX_LiveRegion_Show");var c=a.getBoundingClientRect(),d=c.bottom+10+window.pageYOffset,e=c.left+window.pageXOffset;this.div.style.top=d+"px",this.div.style.left=e+"px";var f=b.colorString();this.inner.style.backgroundColor=f.background,this.inner.style.color=f.foreground},Hide:function(a){this.div.classList.remove("MJX_LiveRegion_Show")},Clear:function(){this.Update(""),this.inner.style.top="",this.inner.style.backgroundColor=""},Update:function(a){e.getOption("speech")&&f.Update(this.inner,a)}},{ANNOUNCE:"Navigatable Math in page. Explore with shift space and arrow keys. Expand or collapse elements hitting enter.",announced:!1,added:!1,styles:{".MJX_LiveRegion":{position:"absolute",top:"0",height:"1px",width:"1px",padding:"1px",overflow:"hidden"},".MJX_LiveRegion_Show":{top:"0",position:"absolute",width:"auto",height:"auto",padding:"0px 0px",opacity:1,"z-index":"202",left:0,right:0,margin:"0 auto","background-color":"white","box-shadow":"0px 10px 20px #888",border:"2px solid #CCCCCC"}},Create:function(a){var b=MathJax.HTML.Element("div",{className:"MJX_LiveRegion"});return b.setAttribute("aria-live",a),b},Update:MathJax.Hub.Browser.isPC?function(a,b){a.textContent="",setTimeout(function(){a.textContent=b},100)}:function(a,b){a.textContent="",a.textContent=b},Announce:function(){if(e.getOption("speech")){f.announced=!0,MathJax.Ajax.Styles(f.styles);var a=f.Create("polite");document.body.appendChild(a),f.Update(a,f.ANNOUNCE),setTimeout(function(){document.body.removeChild(a)},1e3)}}});MathJax.Extension.explorer.LiveRegion=f;var g=MathJax.Extension.explorer.Explorer={liveRegion:f(),walker:null,highlighter:null,hoverer:null,flamer:null,speechDiv:null,earconFile:MathJax.Ajax.config.path.a11y+"/invalid_keypress"+(-1!==["Firefox","Chrome","Opera"].indexOf(MathJax.Hub.Browser.name)?".ogg":".mp3"),expanded:!1,focusoutEvent:MathJax.Hub.Browser.isFirefox?"blur":"focusout",focusinEvent:"focus",ignoreFocusOut:!1,jaxCache:{},messageID:null,Reset:function(){g.FlameEnriched()},Register:function(a){if(e.hook){var b=document.getElementById(a[1]);if(b&&b.id){var c=MathJax.Hub.getJaxFor(b.id);c&&c.enriched&&(g.StateChange(b.id,c),g.liveRegion.Add(),g.AddEvent(b))}}},StateChange:function(a,b){g.GetHighlighter(.2);var c=g.jaxCache[a];c&&c===b.root||(c&&g.highlighter.resetState(a+"-Frame"),g.jaxCache[a]=b.root)},AddAria:function(a){a.setAttribute("role","application"),a.setAttribute("aria-label","Math")},AddHook:function(a){g.RemoveHook(),g.hook=MathJax.Hub.Register.MessageHook("End Math",function(b){var c=b[1].id+"-Frame",d=document.getElementById(c);a&&c===g.expanded&&(g.ActivateWalker(d,a),d.focus(),g.expanded=!1)})},RemoveHook:function(){g.hook&&(MathJax.Hub.UnRegister.MessageHook(g.hook),g.hook=null)},AddMessage:function(){return MathJax.Message.Set("Generating Speech Output")},RemoveMessage:function(a){a&&MathJax.Message.Clear(a)},AddEvent:function(a){var b=a.id+"-Frame",c=a.previousSibling;if(c){var d=c.id!==b?c.firstElementChild:c;g.AddAria(d),g.AddMouseEvents(d),"MathJax_MathML"===d.className&&(d=d.firstElementChild),d&&(d.onkeydown=g.Keydown,g.Flame(d),d.addEventListener(g.focusinEvent,function(a){e.hook&&(f.announced||f.Announce())}),d.addEventListener(g.focusoutEvent,function(a){if(e.hook)return g.ignoreFocusOut&&(g.ignoreFocusOut=!1,"enter"===g.walker.moved)?void a.target.focus():void(g.walker&&g.DeactivateWalker())}),e.getOption("speech")&&g.AddSpeech(d))}},AddSpeech:function(a){var b=a.id,c=MathJax.Hub.getJaxFor(b),d=c.root.toMathML();if(a.getAttribute("haslabel")||g.AddMathLabel(d,b),!a.getAttribute("hasspeech"))switch(e.getOption("generation")){case"eager":g.AddSpeechEager(d,b);break;case"mixed":a.querySelectorAll("[data-semantic-complexity]").length>=e.eagerComplexity&&g.AddSpeechEager(d,b)}},AddSpeechLazy:function(a){var b=new sre.TreeSpeechGenerator;b.setRebuilt(g.walker.rebuilt),b.getSpeech(g.walker.rootNode,g.walker.xml),a.setAttribute("hasspeech","true")},AddSpeechEager:function(a,b){g.MakeSpeechTask(a,b,sre.TreeSpeechGenerator,function(a,b){a.setAttribute("hasspeech","true")},5)},AddMathLabel:function(a,b){g.MakeSpeechTask(a,b,sre.SummarySpeechGenerator,function(a,b){a.setAttribute("haslabel","true"),a.setAttribute("aria-label",b)},5)},MakeSpeechTask:function(a,b,c,d,e){var f=g.AddMessage();setTimeout(function(){var e=new c,h=document.getElementById(b),i=new sre.DummyWalker(h,e,g.highlighter,a),j=i.speech();j&&d(h,j),g.RemoveMessage(f)},e)},Keydown:function(c){if(c.keyCode===b.ESCAPE){if(!g.walker)return;return g.RemoveHook(),g.DeactivateWalker(),void a(c)}if(g.walker&&g.walker.isActive()){var d=g.walker.move(c.keyCode);if(null===d)return;if(d){if("expand"===g.walker.moved){if(g.expanded=g.walker.node.id,MathJax.Hub.Browser.isEdge)return g.ignoreFocusOut=!0,void g.DeactivateWalker();if(MathJax.Hub.Browser.isFirefox||MathJax.Hub.Browser.isMSIE)return void g.DeactivateWalker()}g.liveRegion.Update(g.walker.speech()),g.Highlight()}else g.PlayEarcon();return void a(c)}var f=c.target;if(c.keyCode===b.SPACE){if(c.shiftKey&&e.hook){var h=MathJax.Hub.getJaxFor(f);g.ActivateWalker(f,h),g.AddHook(h)}else MathJax.Extension.MathEvents.Event.ContextMenu(c,f);return void a(c)}},GetHighlighter:function(a){g.highlighter=sre.HighlighterFactory.highlighter({color:e.getOption("background"),alpha:a},{color:e.getOption("foreground"),alpha:1},{renderer:MathJax.Hub.outputJax["jax/mml"][0].id,browser:MathJax.Hub.Browser.name})},AddMouseEvents:function(a){sre.HighlighterFactory.addEvents(a,{mouseover:g.MouseOver,mouseout:g.MouseOut},{renderer:MathJax.Hub.outputJax["jax/mml"][0].id,browser:MathJax.Hub.Browser.name})},MouseOver:function(b){if("none"!==e.getOption("highlight")){if("hover"===e.getOption("highlight")){var c=b.currentTarget;g.GetHighlighter(.1),g.highlighter.highlight([c]),g.hoverer=!0}a(b)}},MouseOut:function(b){return g.hoverer&&(g.highlighter.unhighlight(),g.hoverer=!1),a(b)},Flame:function(a){if("flame"===e.getOption("highlight"))return g.GetHighlighter(.05),g.highlighter.highlightAll(a),void(g.flamer=!0)},UnFlame:function(){g.flamer&&(g.highlighter.unhighlightAll(),g.flamer=null)},FlameEnriched:function(){g.UnFlame();for(var a,b=0,c=MathJax.Hub.getAllJax();a=c[b];b++)g.Flame(a.SourceElement().previousSibling)},Walkers:{syntactic:sre.SyntaxWalker,semantic:sre.SemanticWalker,none:sre.DummyWalker},ActivateWalker:function(a,b){var c=e.getOption("speech"),d=g.Walkers[e.getOption("walker")]||g.Walkers.none,f=c?new sre.DirectSpeechGenerator:new sre.DummySpeechGenerator;g.GetHighlighter(.2),g.walker=new d(a,f,g.highlighter,b.root.toMathML()),c&&!a.getAttribute("hasspeech")&&g.AddSpeechLazy(a),g.walker.activate(),c&&(e.getOption("subtitle")&&g.liveRegion.Show(a,g.highlighter),g.liveRegion.Update(g.walker.speech())),g.Highlight(),g.ignoreFocusOut&&setTimeout(function(){g.ignoreFocusOut=!1},500)},DeactivateWalker:function(){g.liveRegion.Clear(),g.liveRegion.Hide(),g.Unhighlight(),g.currentHighlight=null,g.walker.deactivate(),g.walker=null},Highlight:function(){g.Unhighlight(),g.highlighter.highlight(g.walker.getFocus().getNodes())},Unhighlight:function(){g.highlighter.unhighlight()},PlayEarcon:function(){new Audio(g.earconFile).play()},SpeechOutput:function(){g.Reset(),["Subtitles","Generation"].forEach(function(a){var b=MathJax.Menu.menu.FindId("Accessibility","Explorer",a);b&&(b.disabled=!b.disabled)}),g.Regenerate()},Regenerate:function(){for(var a,b=0,c=MathJax.Hub.getAllJax();a=c[b];b++){var d=document.getElementById(a.inputID+"-Frame");d&&(d.removeAttribute("hasSpeech"),g.AddSpeech(d))}},Startup:function(){var a=MathJax.Extension.collapsible;a&&a.Dependent(e),e.addDefaults()}};MathJax.Hub.Register.StartupHook("End Extensions",function(){e[!1===c.explorer?"Disable":"Enable"](),MathJax.Hub.Startup.signal.Post("Explorer Ready"),MathJax.Hub.Register.StartupHook("MathMenu Ready",function(){d=MathJax.Menu.cookie;var a,b=function(a){e[c.explorer?"Enable":"Disable"](!0,!0),MathJax.Menu.saveCookie()},f=MathJax.Menu.ITEM,h=MathJax.Menu.menu,i={action:g.Reset},j={action:e.speechOption},k=f.SUBMENU(["Explorer","Explorer"],f.CHECKBOX(["Active","Active"],"explorer",{action:b}),f.RULE(),f.SUBMENU(["Walker","Walker"],f.RADIO(["nowalker","No walker"],"Assistive-walker",{value:"none"}),f.RADIO(["syntactic","Syntax walker"],"Assistive-walker"),f.RADIO(["semantic","Semantic walker"],"Assistive-walker")),f.SUBMENU(["Highlight","Highlight"],f.RADIO(["none","None"],"Assistive-highlight",i),f.RADIO(["hover","Hover"],"Assistive-highlight",i),f.RADIO(["flame","Flame"],"Assistive-highlight",i)),f.SUBMENU(["Background","Background"],f.RADIO(["blue","Blue"],"Assistive-background",i),f.RADIO(["red","Red"],"Assistive-background",i),f.RADIO(["green","Green"],"Assistive-background",i),f.RADIO(["yellow","Yellow"],"Assistive-background",i),f.RADIO(["cyan","Cyan"],"Assistive-background",i),f.RADIO(["magenta","Magenta"],"Assistive-background",i),f.RADIO(["white","White"],"Assistive-background",i),f.RADIO(["black","Black"],"Assistive-background",i)),f.SUBMENU(["Foreground","Foreground"],f.RADIO(["black","Black"],"Assistive-foreground",i),f.RADIO(["white","White"],"Assistive-foreground",i),f.RADIO(["magenta","Magenta"],"Assistive-foreground",i),f.RADIO(["cyan","Cyan"],"Assistive-foreground",i),f.RADIO(["yellow","Yellow"],"Assistive-foreground",i),f.RADIO(["green","Green"],"Assistive-foreground",i),f.RADIO(["red","Red"],"Assistive-foreground",i),f.RADIO(["blue","Blue"],"Assistive-foreground",i)),f.RULE(),f.CHECKBOX(["SpeechOutput","Speech Output"],"Assistive-speech",{action:g.SpeechOutput}),f.CHECKBOX(["Subtitles","Subtitles"],"Assistive-subtitle",{disabled:!c["Assistive-speech"]}),f.SUBMENU(["Generation","Generation"],{disabled:!c["Assistive-speech"]},f.RADIO(["eager","Eager"],"Assistive-generation",{action:g.Regenerate}),f.RADIO(["mixed","Mixed"],"Assistive-generation",{action:g.Regenerate}),f.RADIO(["lazy","Lazy"],"Assistive-generation",{action:g.Regenerate})),f.RULE(),f.SUBMENU(["Mathspeak","Mathspeak Rules"],f.RADIO(["mathspeak-default","Verbose"],"Assistive-ruleset",j),f.RADIO(["mathspeak-brief","Brief"],"Assistive-ruleset",j),f.RADIO(["mathspeak-sbrief","Superbrief"],"Assistive-ruleset",j)),f.SUBMENU(["Chromevox","ChromeVox Rules"],f.RADIO(["chromevox-default","Verbose"],"Assistive-ruleset",j),f.RADIO(["chromevox-short","Short"],"Assistive-ruleset",j),f.RADIO(["chromevox-alternative","Alternative"],"Assistive-ruleset",j))),l=(h.FindId("Accessibility")||{}).submenu;l?(a=l.IndexOfId("Explorer"),null!==a?l.items[a]=k:(a=l.IndexOfId("CollapsibleMath"),l.items.splice(a+1,0,k))):(a=h.IndexOfId("CollapsibleMath"),h.items.splice(a+1,0,k)),c.explorer||e.DisableMenus(!0)},20)},20)}),MathJax.Hub.Register.StartupHook("SVG Jax Ready",function(){MathJax.Hub.Config({SVG:{addMMLclasses:!0}});var a=MathJax.OutputJax.SVG;if(parseFloat(a.version)<2.7){var b=a.getJaxFromMath;a.Augment({getJaxFromMath:function(a){return a.parentNode.className.match(/MathJax_SVG_Display/)&&(a=a.parentNode),b.call(this,a)}})}}),MathJax.Ajax.config.path.a11y||(MathJax.Ajax.config.path.a11y=MathJax.Hub.config.root+"/extensions/a11y"),MathJax.Ajax.Require("[a11y]/collapsible.js"),MathJax.Hub.Register.StartupHook("Collapsible Ready",function(){MathJax.Extension.explorer.Explorer.Startup(),MathJax.Ajax.loadComplete("[a11y]/explorer.js")}); \ No newline at end of file diff --git a/extensions/a11y/invalid_keypress.mp3 b/extensions/a11y/invalid_keypress.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cba44de08a288ee4d5aae221b71b740349c0caad GIT binary patch literal 9030 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 WCEpm@S)lay>ms`WyLrxY(tiW58)c^e literal 0 HcmV?d00001 diff --git a/extensions/a11y/mathjax-sre.js b/extensions/a11y/mathjax-sre.js new file mode 100644 index 000000000..fa04c38a4 --- /dev/null +++ b/extensions/a11y/mathjax-sre.js @@ -0,0 +1,742 @@ +var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; +$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++}; +$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var b=0;return $jscomp.iteratorPrototype(function(){return b\x3c/script>')},goog.appendScriptSrcNode_=function(a){var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.src= +a;c.defer=!1;c.async=!1;b.head.appendChild(c)},goog.writeScriptTag_=function(a,b){if(goog.inHtmlDocument_()){var c=goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&"complete"==c.readyState){if(/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}if(void 0===b)if(goog.IS_OLD_IE_){goog.oldIeWaiting_=!0;var d=" onreadystatechange='goog.onScriptLoad_(this, "+ ++goog.lastNonModuleScriptIndex_+")' ";c.write('