├── .htaccess
├── 3DRoom+ic.html
├── 3dRoom.html
├── LICENSE
├── README.md
├── _book
├── img
│ ├── 0
│ │ └── icObjects.png
│ ├── 1
│ │ ├── Sans titre2.png
│ │ └── echelle_sans_echelle.png
│ ├── 2
│ │ ├── main_souris.png
│ │ └── zScroll.png
│ ├── 3
│ │ ├── first_challenge.png
│ │ └── mariobros_operator.png
│ ├── 4
│ │ ├── Sans titre.png
│ │ ├── Sans titre3.png
│ │ ├── Sans titre4.png
│ │ ├── Sans titre5.png
│ │ └── police_facile.png
│ ├── 7
│ │ └── 3droom.png
│ ├── 9
│ │ ├── Capture d'écran 2024-01-10 191511.png
│ │ ├── Capture d'écran 2024-01-10 191712.png
│ │ ├── original_example.png
│ │ └── original_example_error2.png
│ └── title
│ │ ├── aui__AUI__base.png
│ │ └── man_aui__nice_yellow.png
├── still_book.md
└── still_book.pdf
├── fonts
├── basis33
│ ├── LICENSE.txt
│ ├── README.txt
│ └── basis33.ttf
├── bpdots
│ ├── BPdots.otf
│ └── BPdotsSquareBold.otf
├── dpcomic
│ ├── dpcomic.ttf
│ └── license.txt
├── exepixelperfect
│ ├── 1001fonts-exepixelperfect-eula.txt
│ └── EXEPixelPerfect.ttf
├── loadFonts.css
├── loadFonts__pixel.css
├── lunchtime-doubly-so
│ ├── license.txt
│ └── lunchds.ttf
├── medodica
│ ├── MedodicaRegular.otf
│ └── medodica_license_read_me.txt
├── pixeloid
│ ├── License.txt
│ ├── PixeloidMono.otf
│ ├── PixeloidMono.ttf
│ ├── PixeloidSans-Bold.otf
│ ├── PixeloidSans-Bold.ttf
│ ├── PixeloidSans.otf
│ └── PixeloidSans.ttf
├── press-start-2p
│ ├── OFL.txt
│ └── PressStart2P-Regular.ttf
└── return-of-ganon
│ ├── license.txt
│ └── retganon.ttf
├── ic.html
├── img
├── aui__AUI__base.png
├── aui__AUI__clouds.png
├── aui__base.png
├── ezgif-1-c40d1c86f3.gif
├── ic
│ └── cursor__zSegment_64__better.png
├── ic_better_logo2.png
├── ic_better_logo_simple_trans_2.png
├── man_aui__nice_yellow.png
├── oyagame
│ ├── grass.png
│ ├── mud.png
│ ├── sand.png
│ ├── soil.png
│ ├── tree__big.png
│ ├── tree__small.png
│ ├── water__deep.png
│ └── water__ok.png
├── tbd.png
└── zScrollzIndexFreeDraw.png
├── index.html
├── lib
├── 3D
│ ├── three-laser-pointer.min.js
│ └── three.bundle.min.js
├── CircularBuffer.js
├── Equations.js
├── FileSaver.min.js
├── FunctionCallsQueue.js
├── PriorityQueue.js
├── Queue.js
├── algebrite.bundle-for-browser.js
├── anime.min.js
├── base64.js
├── bluebird.browserified.bundle.js
├── bootstrap
│ ├── bootstrap.bundle.min.js
│ └── bootstrap.min.css
├── color.global.min.js
├── countdown.min.js
├── curve
│ ├── bezier.js
│ ├── curve.min.js
│ ├── curve_calc.min.js
│ ├── curve_func.min.js
│ └── zCurve.js
├── decimal.min.js
├── decoration+infiltration.js
├── epub
│ ├── epub-maker
│ │ ├── epub-maker.min.js
│ │ └── vendor
│ │ │ ├── FileSaver.min.js
│ │ │ ├── beautify-html.js
│ │ │ ├── handlebars.min.js
│ │ │ ├── jszip-utils.min.js
│ │ │ ├── jszip.min.js
│ │ │ └── underscore.string.min.js
│ └── epub.min.js
├── fabric+activeSelectionTL.js
├── fabric+brushClone.js
├── fabric+brushPreview.js
├── fabric+canvas2D_willReadFrequently.js
├── fabric+comb.js
├── fabric+contentFlip.js
├── fabric+debug.js
├── fabric+renderZones.js
├── fabric+reverseMouseButtons.js
├── fabric+straightStroke.js
├── fabric+zIndex.js
├── fabric+zIndexPencilBrush.js
├── fabric+zPixel.js
├── fabric+zPixelBrush.js
├── fabric+zPixelPath.js
├── fabric+zPixelRect.js
├── fabric+zPixelRectBrush.js
├── fabric+zPixelRectSelectionBrush.js
├── fabric.531.min.js
├── fabric.min.js
├── fabricjs+curve3.js
├── fabricjs+floodFill.js
├── fabricjs+zCurve3.js
├── ffiilleess
│ └── fzstd.min.js
├── gamecontroller.min.js
├── gemini
│ └── Gemini_all.js
├── geom
│ ├── flatten-js.umd.js
│ ├── intersects.min.js
│ ├── intersects__decimal.js
│ └── rasterize.js
├── hammer.min.js
├── hammer__touch-emulator.js
├── html2canvas.min.js
├── html5-qrcode.min.js
├── iimmgg
│ ├── pngtoy.min.js
│ └── psd-reader.min.js
├── input
│ └── tex
│ │ └── extensions
│ │ ├── action.js
│ │ ├── all-packages.js
│ │ ├── ams.js
│ │ ├── amscd.js
│ │ ├── autoload.js
│ │ ├── bbox.js
│ │ ├── boldsymbol.js
│ │ ├── braket.js
│ │ ├── bussproofs.js
│ │ ├── cancel.js
│ │ ├── centernot.dtx
│ │ ├── color.js
│ │ ├── colorv2.js
│ │ ├── configmacros.js
│ │ ├── enclose.js
│ │ ├── extpfeil.js
│ │ ├── html.js
│ │ ├── mhchem.js
│ │ ├── newcommand.js
│ │ ├── noerrors.js
│ │ ├── noundefined.js
│ │ ├── physics.js
│ │ ├── require.js
│ │ ├── tagformat.js
│ │ ├── textmacros.js
│ │ ├── unicode.js
│ │ └── verb.js
├── instascan.browserified.bundle.js
├── jszip.min.js
├── jwt.browserified.bundle.js
├── loader
│ └── loader.js
├── logic
│ └── tau-prolog.js
├── math-expressions.browserified.bundle.js
├── math.js
├── mathjax.tex-svg.js
├── mathquill
│ ├── font
│ │ ├── Symbola-basic.eot
│ │ ├── Symbola-basic.ttf
│ │ ├── Symbola-basic.woff
│ │ ├── Symbola-basic.woff2
│ │ ├── Symbola.eot
│ │ ├── Symbola.otf
│ │ ├── Symbola.svg
│ │ ├── Symbola.ttf
│ │ ├── Symbola.woff
│ │ └── Symbola.woff2
│ ├── jquery-3.5.1.min.js
│ ├── mathquill.css
│ └── mathquill.min.js
├── ngraph.graph.min.js
├── nodeqrcode.browserified.bundle.js
├── pdf
│ ├── jspdf@2.5.1.umd.min.js
│ └── pdfjs
│ │ ├── pdf.min.js
│ │ └── pdf.worker.min.js
├── peerjs@1.4.7.min.js
├── rxjs.umd.min.js
├── serialize-javascript.browserified.bundle.js
├── text
│ └── fontfaceobserver.js
├── uuid.browserified.bundle.js
├── video-js.min.css
├── video.min.js
├── wad.min.js
├── wolkenkit-eventstore
│ └── wolkenkit-eventstore.browserified.bundle.js
└── written-number.min.js
├── programmaZ.txt
├── programmashute.txt
├── saves
└── infinishute_tutorial.json
├── start_peerjs.bat
├── still_book.txt
├── still_shute.js
└── still_shute.txt
/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 | RewriteCond %{SERVER_PORT} 80
3 | RewriteRule ^(.*)$ https://www.mathgame.fr/$1 [R,L]
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 teachingbeforedying
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # A User Interface
2 |
3 |
4 | ## Drawing demo
5 |
6 |
7 | ## Try it !
8 | (Keep ² or ` key pressed (right above TAB) and click to draw)
9 |
10 | newest version:
11 | http://zpixeleditor.com
12 |
13 | old version:
14 | https://mathgame.fr/3DRoom+ic.html
15 |
16 | To be very comfortable and precise:
17 | _index finger scrolls mouse wheel_ while middlefinger is clicking
18 |
19 | ## About
20 | Infinite whiteboard with interactive elements.
21 | Originally designed for students to manipulate math objects.
22 | Can be used for making presentations, drawings, games or all at the same time.
23 | Open for any kind of improvement, or degeneration.
24 |
25 | ## Key features
26 | Infinite canvas: space is not constrained in width, height, or depth
27 | Z-scroll: resize your elements in a blink
28 | Z-index: bring this in front of that
29 | Create and save/load presentations with text, images, videos, ...
30 | _Easy yet awesome freeDraw UX_ (zPencil, comb, zPixel, ...)
31 | Batch paste
32 | Interactive objects
33 | Operators
34 | _Math objects_
35 | _Composites_
36 | _Conveyors_
37 | _Vessels_
38 | _Pathmade operators_
39 | _Platform operators_
40 | _Cores_
41 | Povs (replacement for 'slides')
42 | ...and many others, scattered here and there
43 |
44 | ## Video
45 | https://www.youtube.com/watch?v=ZGPzRM4oQSw
46 |
47 | ## Try it offline !
48 | 1. Download project : [Code] (green button) > [Download ZIP]
49 | OR more simply: 
50 | 2. Open ic.html
51 | (3. Mess around with objects and keyboard shortcuts)
52 |
53 | For math stuff: https://mathgame.fr (or index.html in offline mode)
54 |
55 |
56 | ## Vision
57 | The vision is to create a galaxy of interactive objects to teach/learn differently.
58 | But, to be pragmatic, it's all about z-ifying all that can be z-ified
59 | (i.e. what if all software were made with infinite canvas as a principle)
60 |
61 | A ton of ideas still remain in 
62 | Some are written in English and some in French.
63 | Ideas rating: from *** (very good idea) to * (nice idea)
64 |
Interested by an idea? Go on and code it yourself!
65 |
66 |
There is some (huge) refactoring to do (Reduce loc nb, create lib(s) with separate files, improve performance, ...)
67 |
See this as the first version of something bigger
68 |
69 |
70 |
71 |
72 |
73 | ## Development routine
74 | 3 tabs in VSCode:
75 | programmashute: day-to-day low-level technical issues and progresses
76 | 3DRoom+ic.html: code
77 | : "ideas worth coding"
78 |
--------------------------------------------------------------------------------
/_book/img/0/icObjects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/0/icObjects.png
--------------------------------------------------------------------------------
/_book/img/1/Sans titre2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/1/Sans titre2.png
--------------------------------------------------------------------------------
/_book/img/1/echelle_sans_echelle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/1/echelle_sans_echelle.png
--------------------------------------------------------------------------------
/_book/img/2/main_souris.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/2/main_souris.png
--------------------------------------------------------------------------------
/_book/img/2/zScroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/2/zScroll.png
--------------------------------------------------------------------------------
/_book/img/3/first_challenge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/3/first_challenge.png
--------------------------------------------------------------------------------
/_book/img/3/mariobros_operator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/3/mariobros_operator.png
--------------------------------------------------------------------------------
/_book/img/4/Sans titre.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/4/Sans titre.png
--------------------------------------------------------------------------------
/_book/img/4/Sans titre3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/4/Sans titre3.png
--------------------------------------------------------------------------------
/_book/img/4/Sans titre4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/4/Sans titre4.png
--------------------------------------------------------------------------------
/_book/img/4/Sans titre5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/4/Sans titre5.png
--------------------------------------------------------------------------------
/_book/img/4/police_facile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/4/police_facile.png
--------------------------------------------------------------------------------
/_book/img/7/3droom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/7/3droom.png
--------------------------------------------------------------------------------
/_book/img/9/Capture d'écran 2024-01-10 191511.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/9/Capture d'écran 2024-01-10 191511.png
--------------------------------------------------------------------------------
/_book/img/9/Capture d'écran 2024-01-10 191712.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/9/Capture d'écran 2024-01-10 191712.png
--------------------------------------------------------------------------------
/_book/img/9/original_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/9/original_example.png
--------------------------------------------------------------------------------
/_book/img/9/original_example_error2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/9/original_example_error2.png
--------------------------------------------------------------------------------
/_book/img/title/aui__AUI__base.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/title/aui__AUI__base.png
--------------------------------------------------------------------------------
/_book/img/title/man_aui__nice_yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/img/title/man_aui__nice_yellow.png
--------------------------------------------------------------------------------
/_book/still_book.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/_book/still_book.pdf
--------------------------------------------------------------------------------
/fonts/basis33/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2004, 2005 Tristan Grimmer
4 | Copyright (c) 2014 Manchson
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
--------------------------------------------------------------------------------
/fonts/basis33/README.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/basis33/README.txt
--------------------------------------------------------------------------------
/fonts/basis33/basis33.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/basis33/basis33.ttf
--------------------------------------------------------------------------------
/fonts/bpdots/BPdots.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/bpdots/BPdots.otf
--------------------------------------------------------------------------------
/fonts/bpdots/BPdotsSquareBold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/bpdots/BPdotsSquareBold.otf
--------------------------------------------------------------------------------
/fonts/dpcomic/dpcomic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/dpcomic/dpcomic.ttf
--------------------------------------------------------------------------------
/fonts/dpcomic/license.txt:
--------------------------------------------------------------------------------
1 | Thanks for downloading one of codeman38's retro video game fonts, as seen on Memepool, BoingBoing, and all around the blogosphere.
2 |
3 | So, you're wondering what the license is for these fonts? Pretty simple; it's based upon that used for Bitstream's Vera font set .
4 |
5 | Basically, here are the key points summarized, in as little legalese as possible; I hate reading license agreements as much as you probably do:
6 |
7 | With one specific exception, you have full permission to bundle these fonts in your own free or commercial projects-- and by projects, I'm referring to not just software but also electronic documents and print publications.
8 |
9 | So what's the exception? Simple: you can't re-sell these fonts in a commercial font collection. I've seen too many font CDs for sale in stores that are just a repackaging of thousands of freeware fonts found on the internet, and in my mind, that's quite a bit like highway robbery. Note that this *only* applies to products that are font collections in and of themselves; you may freely bundle these fonts with an operating system, application program, or the like.
10 |
11 | Feel free to modify these fonts and even to release the modified versions, as long as you change the original font names (to ensure consistency among people with the font installed) and as long as you give credit somewhere in the font file to codeman38 or zone38.net. I may even incorporate these changes into a later version of my fonts if you wish to send me the modifed fonts via e-mail.
12 |
13 | Also, feel free to mirror these fonts on your own site, as long as you make it reasonably clear that these fonts are not your own work. I'm not asking for much; linking to zone38.net or even just mentioning the nickname codeman38 should be enough.
14 |
15 | Well, that pretty much sums it up... so without further ado, install and enjoy these fonts from the golden age of video games.
16 |
17 | [ codeman38 | cody@zone38.net | http://www.zone38.net/ ]
--------------------------------------------------------------------------------
/fonts/exepixelperfect/1001fonts-exepixelperfect-eula.txt:
--------------------------------------------------------------------------------
1 | 1001Fonts Free For Commercial Use License (FFC)
2 |
3 | Preamble
4 | In this license, 'EXEPixelPerfect' refers to the given .zip file, which may contain one or numerous fonts. These fonts can be of any type (.ttf, .otf, ...) and together they form a 'font family' or in short a 'typeface'.
5 |
6 | 1. Copyright
7 | EXEPixelPerfect is the intellectual property of its respective author, provided it is original, and is protected by copyright laws in many parts of the world.
8 |
9 | 2. Usage
10 | EXEPixelPerfect may be downloaded and used free of charge for both personal and commercial use, as long as the usage is not racist or illegal. Personal use refers to all usage that does not generate financial income in a business manner, for instance:
11 |
12 | - personal scrapbooking for yourself
13 | - recreational websites and blogs for friends and family
14 | - prints such as flyers, posters, t-shirts for churches, charities, and non-profit organizations
15 |
16 | Commercial use refers to usage in a business environment, including:
17 |
18 | - business cards, logos, advertising, websites, mobile apps for companies
19 | - t-shirts, books, apparel that will be sold for money
20 | - flyers, posters for events that charge admission
21 | - freelance graphic design work
22 | - anything that will generate direct or indirect income
23 |
24 | 3. Modification
25 | EXEPixelPerfect may not be modified, altered, adapted or built upon without written permission by its respective author. This pertains all files within the downloadable font zip-file.
26 |
27 | 4. Conversion
28 | EXEPixelPerfect may be converted to other formats such as WOFF, SVG or EOT webfonts, as long as the font is not modified in any other way, such as changing names or altering individual glyphs.
29 |
30 | 5. Distribution
31 | While EXEPixelPerfect may freely be copied and passed along to other individuals for private use as its original downloadable zip-file, it may not be sold or published without written permission by its respective author.
32 |
33 | 6. Embedding
34 | EXEPixelPerfect may be embedded into an application such as a web- or mobile app, independant of the number of the application users, as long as the application does not distribute EXEPixelPerfect, such as offering it as a download.
35 |
36 | 7. Disclaimer
37 | EXEPixelPerfect is offered 'as is' without any warranty. 1001fonts.com and the respective author of EXEPixelPerfect shall not be liable for any damage derived from using this typeface. By using EXEPixelPerfect you agree to the terms of this license.
--------------------------------------------------------------------------------
/fonts/exepixelperfect/EXEPixelPerfect.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/exepixelperfect/EXEPixelPerfect.ttf
--------------------------------------------------------------------------------
/fonts/loadFonts.css:
--------------------------------------------------------------------------------
1 | /*PIXEL FONTS*/
2 |
3 | @font-face {
4 | font-family: "basis33";
5 | src: url("./basis33/basis33.ttf");
6 | }
7 |
8 | @font-face {
9 | font-family: "bpdots";
10 | src: url("./bpdots/bpdots.otf");
11 | }
12 |
13 | @font-face {
14 | font-family: "dpcomic";
15 | src: url("./dpcomic/dpcomic.ttf");
16 | }
17 |
18 | @font-face {
19 | font-family: "EXEPixelPerfect";
20 | src: url("./exepixelperfect/EXEPixelPerfect.ttf");
21 | }
22 |
23 | @font-face {
24 | font-family: "lunchtime-doubly-so";
25 | src: url("./basis33/lunchds.ttf");
26 | }
27 |
28 | @font-face {
29 | font-family: "medodica";
30 | src: url("./medodica/MedodicaRegular.otf");
31 | }
32 |
33 | @font-face {
34 | font-family: "pixeloid";
35 | src: url("./pixeloid/PixeloidSans.ttf");
36 | }
37 |
38 | @font-face {
39 | font-family: "press-start-2p";
40 | src: url("./press-start-2p/PressStart2P-Regular.ttf");
41 | }
42 |
43 | @font-face {
44 | font-family: "return-of-ganon";
45 | src: url("./return-of-ganon/retganon.ttf");
46 | }
47 |
--------------------------------------------------------------------------------
/fonts/loadFonts__pixel.css:
--------------------------------------------------------------------------------
1 | /*PIXEL FONTS*/
2 |
3 | @font-face {
4 | font-family: "medodica";
5 | src: url("./medodica/MedodicaRegular.otf");
6 | }
7 |
8 | @font-face {
9 | font-family: "basis33";
10 | src: url("./basis33/basis33.ttf");
11 | }
12 |
13 | @font-face {
14 | font-family: "bpdots";
15 | src: url("./bpdots/BPdotsSquareBold.otf");
16 | }
17 |
18 | @font-face {
19 | font-family: "dpcomic";
20 | src: url("./dpcomic/dpcomic.ttf");
21 | }
22 |
23 | @font-face {
24 | font-family: "EXEPixelPerfect";
25 | src: url("./exepixelperfect/EXEPixelPerfect.ttf");
26 | }
27 |
28 | @font-face {
29 | font-family: "lunchtime-doubly-so";
30 | src: url("./lunchtime-doubly-so/lunchds.ttf");
31 | }
32 |
33 | @font-face {
34 | font-family: "pixeloid";
35 | src: url("./pixeloid/PixeloidSans.ttf");
36 | }
37 |
38 | @font-face {
39 | font-family: "press-start-2p";
40 | src: url("./press-start-2p/PressStart2P-Regular.ttf");
41 | }
42 |
43 | @font-face {
44 | font-family: "return-of-ganon";
45 | src: url("./return-of-ganon/retganon.ttf");
46 | }
47 |
--------------------------------------------------------------------------------
/fonts/lunchtime-doubly-so/license.txt:
--------------------------------------------------------------------------------
1 | Thanks for downloading one of codeman38's retro video game fonts, as seen on Memepool, BoingBoing, and all around the blogosphere.
2 |
3 | So, you're wondering what the license is for these fonts? Pretty simple; it's based upon that used for Bitstream's Vera font set .
4 |
5 | Basically, here are the key points summarized, in as little legalese as possible; I hate reading license agreements as much as you probably do:
6 |
7 | With one specific exception, you have full permission to bundle these fonts in your own free or commercial projects-- and by projects, I'm referring to not just software but also electronic documents and print publications.
8 |
9 | So what's the exception? Simple: you can't re-sell these fonts in a commercial font collection. I've seen too many font CDs for sale in stores that are just a repackaging of thousands of freeware fonts found on the internet, and in my mind, that's quite a bit like highway robbery. Note that this *only* applies to products that are font collections in and of themselves; you may freely bundle these fonts with an operating system, application program, or the like.
10 |
11 | Feel free to modify these fonts and even to release the modified versions, as long as you change the original font names (to ensure consistency among people with the font installed) and as long as you give credit somewhere in the font file to codeman38 or zone38.net. I may even incorporate these changes into a later version of my fonts if you wish to send me the modifed fonts via e-mail.
12 |
13 | Also, feel free to mirror these fonts on your own site, as long as you make it reasonably clear that these fonts are not your own work. I'm not asking for much; linking to zone38.net or even just mentioning the nickname codeman38 should be enough.
14 |
15 | Well, that pretty much sums it up... so without further ado, install and enjoy these fonts from the golden age of video games.
16 |
17 | [ codeman38 | cody@zone38.net | http://www.zone38.net/ ]
--------------------------------------------------------------------------------
/fonts/lunchtime-doubly-so/lunchds.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/lunchtime-doubly-so/lunchds.ttf
--------------------------------------------------------------------------------
/fonts/medodica/MedodicaRegular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/medodica/MedodicaRegular.otf
--------------------------------------------------------------------------------
/fonts/medodica/medodica_license_read_me.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2024, Roberto Mocci (< postocarattere@gmail.com | https://patreon.com/rmocci >),
2 | with Reserved Font Name Medodica.
3 |
4 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
5 | This license is copied below, and is also available with a FAQ at:
6 | http://scripts.sil.org/OFL
7 |
8 |
9 | -----------------------------------------------------------
10 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
11 | -----------------------------------------------------------
12 |
13 | PREAMBLE
14 | The goals of the Open Font License (OFL) are to stimulate worldwide
15 | development of collaborative font projects, to support the font creation
16 | efforts of academic and linguistic communities, and to provide a free and
17 | open framework in which fonts may be shared and improved in partnership
18 | with others.
19 |
20 | The OFL allows the licensed fonts to be used, studied, modified and
21 | redistributed freely as long as they are not sold by themselves. The
22 | fonts, including any derivative works, can be bundled, embedded,
23 | redistributed and/or sold with any software provided that any reserved
24 | names are not used by derivative works. The fonts and derivatives,
25 | however, cannot be released under any other type of license. The
26 | requirement for fonts to remain under this license does not apply
27 | to any document created using the fonts or their derivatives.
28 |
29 | DEFINITIONS
30 | "Font Software" refers to the set of files released by the Copyright
31 | Holder(s) under this license and clearly marked as such. This may
32 | include source files, build scripts and documentation.
33 |
34 | "Reserved Font Name" refers to any names specified as such after the
35 | copyright statement(s).
36 |
37 | "Original Version" refers to the collection of Font Software components as
38 | distributed by the Copyright Holder(s).
39 |
40 | "Modified Version" refers to any derivative made by adding to, deleting,
41 | or substituting -- in part or in whole -- any of the components of the
42 | Original Version, by changing formats or by porting the Font Software to a
43 | new environment.
44 |
45 | "Author" refers to any designer, engineer, programmer, technical
46 | writer or other person who contributed to the Font Software.
47 |
48 | PERMISSION & CONDITIONS
49 | Permission is hereby granted, free of charge, to any person obtaining
50 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
51 | redistribute, and sell modified and unmodified copies of the Font
52 | Software, subject to the following conditions:
53 |
54 | 1) Neither the Font Software nor any of its individual components,
55 | in Original or Modified Versions, may be sold by itself.
56 |
57 | 2) Original or Modified Versions of the Font Software may be bundled,
58 | redistributed and/or sold with any software, provided that each copy
59 | contains the above copyright notice and this license. These can be
60 | included either as stand-alone text files, human-readable headers or
61 | in the appropriate machine-readable metadata fields within text or
62 | binary files as long as those fields can be easily viewed by the user.
63 |
64 | 3) No Modified Version of the Font Software may use the Reserved Font
65 | Name(s) unless explicit written permission is granted by the corresponding
66 | Copyright Holder. This restriction only applies to the primary font name as
67 | presented to the users.
68 |
69 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
70 | Software shall not be used to promote, endorse or advertise any
71 | Modified Version, except to acknowledge the contribution(s) of the
72 | Copyright Holder(s) and the Author(s) or with their explicit written
73 | permission.
74 |
75 | 5) The Font Software, modified or unmodified, in part or in whole,
76 | must be distributed entirely under this license, and must not be
77 | distributed under any other license. The requirement for fonts to
78 | remain under this license does not apply to any document created
79 | using the Font Software.
80 |
81 | TERMINATION
82 | This license becomes null and void if any of the above conditions are
83 | not met.
84 |
85 | DISCLAIMER
86 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
87 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
88 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
89 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
90 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
91 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
92 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
93 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
94 | OTHER DEALINGS IN THE FONT SOFTWARE.
--------------------------------------------------------------------------------
/fonts/pixeloid/License.txt:
--------------------------------------------------------------------------------
1 | Copyright © 2020-2023 GGBotNet (https://ggbot.net/fonts/), with Reserved Font Name "Pixeloid".
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 | -----------------------------------------------------------
8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
9 | -----------------------------------------------------------
10 |
11 | PREAMBLE
12 | The goals of the Open Font License (OFL) are to stimulate worldwide
13 | development of collaborative font projects, to support the font creation
14 | efforts of academic and linguistic communities, and to provide a free and
15 | open framework in which fonts may be shared and improved in partnership
16 | with others.
17 |
18 | The OFL allows the licensed fonts to be used, studied, modified and
19 | redistributed freely as long as they are not sold by themselves. The
20 | fonts, including any derivative works, can be bundled, embedded,
21 | redistributed and/or sold with any software provided that any reserved
22 | names are not used by derivative works. The fonts and derivatives,
23 | however, cannot be released under any other type of license. The
24 | requirement for fonts to remain under this license does not apply
25 | to any document created using the fonts or their derivatives.
26 |
27 | DEFINITIONS
28 | "Font Software" refers to the set of files released by the Copyright
29 | Holder(s) under this license and clearly marked as such. This may
30 | include source files, build scripts and documentation.
31 |
32 | "Reserved Font Name" refers to any names specified as such after the
33 | copyright statement(s).
34 |
35 | "Original Version" refers to the collection of Font Software components as
36 | distributed by the Copyright Holder(s).
37 |
38 | "Modified Version" refers to any derivative made by adding to, deleting,
39 | or substituting -- in part or in whole -- any of the components of the
40 | Original Version, by changing formats or by porting the Font Software to a
41 | new environment.
42 |
43 | "Author" refers to any designer, engineer, programmer, technical
44 | writer or other person who contributed to the Font Software.
45 |
46 | PERMISSION & CONDITIONS
47 | Permission is hereby granted, free of charge, to any person obtaining
48 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
49 | redistribute, and sell modified and unmodified copies of the Font
50 | Software, subject to the following conditions:
51 |
52 | 1) Neither the Font Software nor any of its individual components,
53 | in Original or Modified Versions, may be sold by itself.
54 |
55 | 2) Original or Modified Versions of the Font Software may be bundled,
56 | redistributed and/or sold with any software, provided that each copy
57 | contains the above copyright notice and this license. These can be
58 | included either as stand-alone text files, human-readable headers or
59 | in the appropriate machine-readable metadata fields within text or
60 | binary files as long as those fields can be easily viewed by the user.
61 |
62 | 3) No Modified Version of the Font Software may use the Reserved Font
63 | Name(s) unless explicit written permission is granted by the corresponding
64 | Copyright Holder. This restriction only applies to the primary font name as
65 | presented to the users.
66 |
67 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
68 | Software shall not be used to promote, endorse or advertise any
69 | Modified Version, except to acknowledge the contribution(s) of the
70 | Copyright Holder(s) and the Author(s) or with their explicit written
71 | permission.
72 |
73 | 5) The Font Software, modified or unmodified, in part or in whole,
74 | must be distributed entirely under this license, and must not be
75 | distributed under any other license. The requirement for fonts to
76 | remain under this license does not apply to any document created
77 | using the Font Software.
78 |
79 | TERMINATION
80 | This license becomes null and void if any of the above conditions are
81 | not met.
82 |
83 | DISCLAIMER
84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
88 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
92 | OTHER DEALINGS IN THE FONT SOFTWARE.
93 |
--------------------------------------------------------------------------------
/fonts/pixeloid/PixeloidMono.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/pixeloid/PixeloidMono.otf
--------------------------------------------------------------------------------
/fonts/pixeloid/PixeloidMono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/pixeloid/PixeloidMono.ttf
--------------------------------------------------------------------------------
/fonts/pixeloid/PixeloidSans-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/pixeloid/PixeloidSans-Bold.otf
--------------------------------------------------------------------------------
/fonts/pixeloid/PixeloidSans-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/pixeloid/PixeloidSans-Bold.ttf
--------------------------------------------------------------------------------
/fonts/pixeloid/PixeloidSans.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/pixeloid/PixeloidSans.otf
--------------------------------------------------------------------------------
/fonts/pixeloid/PixeloidSans.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/pixeloid/PixeloidSans.ttf
--------------------------------------------------------------------------------
/fonts/press-start-2p/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012, Cody "CodeMan38" Boisclair (cody@zone38.net), with Reserved Font Name "Press Start 2P"
2 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
3 | This license is copied below, and is also available with a FAQ at:
4 | http://scripts.sil.org/OFL
5 |
6 |
7 | -----------------------------------------------------------
8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
9 | -----------------------------------------------------------
10 |
11 | PREAMBLE
12 | The goals of the Open Font License (OFL) are to stimulate worldwide
13 | development of collaborative font projects, to support the font creation
14 | efforts of academic and linguistic communities, and to provide a free and
15 | open framework in which fonts may be shared and improved in partnership
16 | with others.
17 |
18 | The OFL allows the licensed fonts to be used, studied, modified and
19 | redistributed freely as long as they are not sold by themselves. The
20 | fonts, including any derivative works, can be bundled, embedded,
21 | redistributed and/or sold with any software provided that any reserved
22 | names are not used by derivative works. The fonts and derivatives,
23 | however, cannot be released under any other type of license. The
24 | requirement for fonts to remain under this license does not apply
25 | to any document created using the fonts or their derivatives.
26 |
27 | DEFINITIONS
28 | "Font Software" refers to the set of files released by the Copyright
29 | Holder(s) under this license and clearly marked as such. This may
30 | include source files, build scripts and documentation.
31 |
32 | "Reserved Font Name" refers to any names specified as such after the
33 | copyright statement(s).
34 |
35 | "Original Version" refers to the collection of Font Software components as
36 | distributed by the Copyright Holder(s).
37 |
38 | "Modified Version" refers to any derivative made by adding to, deleting,
39 | or substituting -- in part or in whole -- any of the components of the
40 | Original Version, by changing formats or by porting the Font Software to a
41 | new environment.
42 |
43 | "Author" refers to any designer, engineer, programmer, technical
44 | writer or other person who contributed to the Font Software.
45 |
46 | PERMISSION & CONDITIONS
47 | Permission is hereby granted, free of charge, to any person obtaining
48 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
49 | redistribute, and sell modified and unmodified copies of the Font
50 | Software, subject to the following conditions:
51 |
52 | 1) Neither the Font Software nor any of its individual components,
53 | in Original or Modified Versions, may be sold by itself.
54 |
55 | 2) Original or Modified Versions of the Font Software may be bundled,
56 | redistributed and/or sold with any software, provided that each copy
57 | contains the above copyright notice and this license. These can be
58 | included either as stand-alone text files, human-readable headers or
59 | in the appropriate machine-readable metadata fields within text or
60 | binary files as long as those fields can be easily viewed by the user.
61 |
62 | 3) No Modified Version of the Font Software may use the Reserved Font
63 | Name(s) unless explicit written permission is granted by the corresponding
64 | Copyright Holder. This restriction only applies to the primary font name as
65 | presented to the users.
66 |
67 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
68 | Software shall not be used to promote, endorse or advertise any
69 | Modified Version, except to acknowledge the contribution(s) of the
70 | Copyright Holder(s) and the Author(s) or with their explicit written
71 | permission.
72 |
73 | 5) The Font Software, modified or unmodified, in part or in whole,
74 | must be distributed entirely under this license, and must not be
75 | distributed under any other license. The requirement for fonts to
76 | remain under this license does not apply to any document created
77 | using the Font Software.
78 |
79 | TERMINATION
80 | This license becomes null and void if any of the above conditions are
81 | not met.
82 |
83 | DISCLAIMER
84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
88 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
92 | OTHER DEALINGS IN THE FONT SOFTWARE.
93 |
--------------------------------------------------------------------------------
/fonts/press-start-2p/PressStart2P-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/press-start-2p/PressStart2P-Regular.ttf
--------------------------------------------------------------------------------
/fonts/return-of-ganon/license.txt:
--------------------------------------------------------------------------------
1 | Thanks for downloading one of codeman38's retro video game fonts, as seen on Memepool, BoingBoing, and all around the blogosphere.
2 |
3 | So, you're wondering what the license is for these fonts? Pretty simple; it's based upon that used for Bitstream's Vera font set .
4 |
5 | Basically, here are the key points summarized, in as little legalese as possible; I hate reading license agreements as much as you probably do:
6 |
7 | With one specific exception, you have full permission to bundle these fonts in your own free or commercial projects-- and by projects, I'm referring to not just software but also electronic documents and print publications.
8 |
9 | So what's the exception? Simple: you can't re-sell these fonts in a commercial font collection. I've seen too many font CDs for sale in stores that are just a repackaging of thousands of freeware fonts found on the internet, and in my mind, that's quite a bit like highway robbery. Note that this *only* applies to products that are font collections in and of themselves; you may freely bundle these fonts with an operating system, application program, or the like.
10 |
11 | Feel free to modify these fonts and even to release the modified versions, as long as you change the original font names (to ensure consistency among people with the font installed) and as long as you give credit somewhere in the font file to codeman38 or zone38.net. I may even incorporate these changes into a later version of my fonts if you wish to send me the modifed fonts via e-mail.
12 |
13 | Also, feel free to mirror these fonts on your own site, as long as you make it reasonably clear that these fonts are not your own work. I'm not asking for much; linking to zone38.net or even just mentioning the nickname codeman38 should be enough.
14 |
15 | Well, that pretty much sums it up... so without further ado, install and enjoy these fonts from the golden age of video games.
16 |
17 | [ codeman38 | cody@zone38.net | http://www.zone38.net/ ]
--------------------------------------------------------------------------------
/fonts/return-of-ganon/retganon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/fonts/return-of-ganon/retganon.ttf
--------------------------------------------------------------------------------
/img/aui__AUI__base.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/aui__AUI__base.png
--------------------------------------------------------------------------------
/img/aui__AUI__clouds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/aui__AUI__clouds.png
--------------------------------------------------------------------------------
/img/aui__base.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/aui__base.png
--------------------------------------------------------------------------------
/img/ezgif-1-c40d1c86f3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/ezgif-1-c40d1c86f3.gif
--------------------------------------------------------------------------------
/img/ic/cursor__zSegment_64__better.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/ic/cursor__zSegment_64__better.png
--------------------------------------------------------------------------------
/img/ic_better_logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/ic_better_logo2.png
--------------------------------------------------------------------------------
/img/ic_better_logo_simple_trans_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/ic_better_logo_simple_trans_2.png
--------------------------------------------------------------------------------
/img/man_aui__nice_yellow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/man_aui__nice_yellow.png
--------------------------------------------------------------------------------
/img/oyagame/grass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/grass.png
--------------------------------------------------------------------------------
/img/oyagame/mud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/mud.png
--------------------------------------------------------------------------------
/img/oyagame/sand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/sand.png
--------------------------------------------------------------------------------
/img/oyagame/soil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/soil.png
--------------------------------------------------------------------------------
/img/oyagame/tree__big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/tree__big.png
--------------------------------------------------------------------------------
/img/oyagame/tree__small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/tree__small.png
--------------------------------------------------------------------------------
/img/oyagame/water__deep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/water__deep.png
--------------------------------------------------------------------------------
/img/oyagame/water__ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/oyagame/water__ok.png
--------------------------------------------------------------------------------
/img/tbd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/tbd.png
--------------------------------------------------------------------------------
/img/zScrollzIndexFreeDraw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/teachingbeforedying/a-user-interface/bfe00f26398883d3c538681a9dfa6a31a0ed5d9e/img/zScrollzIndexFreeDraw.png
--------------------------------------------------------------------------------
/lib/FileSaver.min.js:
--------------------------------------------------------------------------------
1 | (function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)});
2 |
3 | //# sourceMappingURL=FileSaver.min.js.map
--------------------------------------------------------------------------------
/lib/FunctionCallsQueue.js:
--------------------------------------------------------------------------------
1 | class FunctionCallsQueue {
2 | constructor(autorun = true, queue = []) {
3 | this.running = false;
4 | this.autorun = autorun;
5 | this.queue = queue;
6 |
7 | this.dict_cancelable = {};
8 | }
9 |
10 | add(cb) {
11 | this.queue.push((value) => {
12 | const finished = new Promise((resolve, reject) => {
13 | const callbackResponse = cb(value);
14 |
15 | if (callbackResponse !== false) {
16 | resolve(callbackResponse);
17 | } else {
18 | reject(callbackResponse);
19 | }
20 | });
21 |
22 | finished.then(this.dequeue.bind(this), (() => {}));
23 | });
24 |
25 | if (this.autorun && !this.running) {
26 | this.dequeue();
27 | }
28 |
29 | return this;
30 | }
31 |
32 | add_promise(cb_p) {
33 | this.queue.push((value) => {
34 | cb_p.then(this.dequeue.bind(this), (() => {}));
35 | });
36 |
37 | if (this.autorun && !this.running) {
38 | this.dequeue();
39 | }
40 |
41 | return this;
42 | }
43 |
44 | dequeue(value) {
45 | this.running = this.queue.shift();
46 |
47 | if (this.running) {
48 | this.running(value);
49 | }
50 |
51 | return this.running;
52 | }
53 |
54 | get next() {
55 | return this.dequeue;
56 | }
57 |
58 |
59 |
60 |
61 |
62 | remove(cb__toBeRemoved) {
63 | var outBool;
64 |
65 | if(this.running == cb__toBeRemoved) {
66 | //too late to be removed
67 | outBool = false;
68 | } else {
69 | const index = this.queue.indexOf(cb__toBeRemoved);
70 | if (index > -1) { // only splice array when item is found
71 | const queue__new = this.queue.splice(index, 1); // 2nd parameter means remove one item only
72 | this.queue = queue__new;
73 | }
74 | outBool = true;
75 | }
76 |
77 | return outBool;
78 | }
79 |
80 |
81 | }
--------------------------------------------------------------------------------
/lib/PriorityQueue.js:
--------------------------------------------------------------------------------
1 | class PriorityQueueElement {
2 |
3 | constructor(payload, priority) {
4 | this.payload = payload;
5 | this.priority = priority;
6 | }
7 |
8 | }
9 |
10 | class PriorityQueue {
11 | /*
12 | /!\ element with high priority will be treated last
13 | */
14 | constructor() {
15 | this.arr_priority = [];
16 | this.dict_pqe = {};
17 | }
18 |
19 |
20 |
21 | indexLowestPriority() {
22 | const index__priority = this.arr_priority.findIndex(elt => elt != null);
23 | return index__priority;
24 | }
25 |
26 | lowestPriority() {
27 | const index__priority = this.indexLowestPriority();
28 | const priority = this.arr_priority[index__priority];
29 | return priority;
30 | }
31 |
32 |
33 |
34 | enqueue(pqe) {
35 | const priority = pqe.priority;
36 |
37 | const isPriorityExisting = this.arr_priority.includes(priority);
38 | if(!isPriorityExisting) {
39 | const index_insertion = this.arr_priority.reduce((acc,priority_i) => {
40 | if(priority_i < priority) {
41 | acc += 1;
42 | }
43 | return acc;
44 | }, 0);
45 |
46 | //insert priority in array
47 | this.arr_priority.splice(index_insertion, 0, priority);
48 |
49 | //initialize list in dict
50 | this.dict_pqe[priority] = [];
51 | }
52 |
53 | //insert pqe in list in dict
54 | this.dict_pqe[priority].push(pqe);
55 |
56 | return this;
57 | }
58 |
59 | dequeue() {
60 | // logger.log("arr_priority", this.arr_priority);
61 | // logger.log("dict_pqe", this.dict_pqe);
62 |
63 | //find first non-null priority
64 | const index__priority = this.indexLowestPriority();
65 | const priority = this.arr_priority[index__priority];
66 | // logger.log("priority", priority);
67 |
68 | //remove pqe from list in dict
69 | const pqe_last = this.dict_pqe[priority].pop();
70 | // logger.log("pqe_last", pqe_last);
71 | // logger.log("this.dict_pqe[priority]", this.dict_pqe[priority]);
72 |
73 | //clean dict and array if needed
74 | if(this.dict_pqe[priority].length == 0) {
75 | delete this.dict_pqe[priority];
76 | this.arr_priority.splice(index__priority, 1);
77 | }
78 | // logger.log("this.arr_priority", this.arr_priority);
79 |
80 | return pqe_last;
81 | }
82 |
83 | peek() {
84 | const priority = this.lowestPriority();
85 | const pqe_last = this.dict_pqe[priority][(this.dict_pqe[priority].length - 1)];
86 | return pqe_last;
87 | }
88 |
89 | remove(pqe) {
90 |
91 | const priority = pqe.priority;
92 |
93 | //remove pqe from list in dict
94 | const index__pqe = this.dict_pqe[priority].findIndex(elt => elt == pqe);
95 | this.dict_pqe[priority].splice(index__pqe, 1);
96 |
97 | //clean dict and array if needed
98 | if(this.dict_pqe[priority].length == 0) {
99 | delete this.dict_pqe[priority];
100 |
101 | const index__priority = this.arr_priority.findIndex(elt => elt == priority);
102 | this.arr_priority.splice(index__priority, 1);
103 | }
104 |
105 | return this;
106 | }
107 |
108 |
109 |
110 |
111 | clear() {
112 | this.count = 0;
113 | this.arr_priority = [];
114 | this.dict_pqe = {};
115 | }
116 |
117 | isEmpty() {
118 | return (this.arr_priority.length == 0);
119 | }
120 |
121 | }
122 |
--------------------------------------------------------------------------------
/lib/Queue.js:
--------------------------------------------------------------------------------
1 | //code.iamkate.com
2 | function Queue() {
3 | var a=[],b=0;
4 | this.getArr=function(){return a;};
5 | this.getLength=function(){return a.length-b};
6 | this.isEmpty=function(){return 0==a.length};
7 | this.enqueue=function(b){a.push(b)};
8 | this.dequeue=function(){if(0!=a.length){var c=a[b];2*++b>=a.length&&(a=a.slice(b),b=0);return c}};
9 | this.peek=function(){return 0> 2;
61 | var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
62 | var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
63 | var enc4 = chr3 & 63;
64 |
65 | if (isNaN(chr2))
66 | {
67 | enc3 = enc4 = 64;
68 | }
69 | else if (isNaN(chr3))
70 | {
71 | enc4 = 64;
72 | }
73 |
74 | output.append(this.codex.charAt(enc1) + this.codex.charAt(enc2) + this.codex.charAt(enc3) + this.codex.charAt(enc4));
75 | }
76 |
77 | return output.toString();
78 | },
79 |
80 | decode : function (input)
81 | {
82 | var output = new StringBuffer();
83 |
84 | var enumerator = new Base64DecodeEnumerator(input);
85 | while (enumerator.moveNext())
86 | {
87 | var charCode = enumerator.current;
88 |
89 | if (charCode < 128)
90 | output.append(String.fromCharCode(charCode));
91 | else if ((charCode > 191) && (charCode < 224))
92 | {
93 | enumerator.moveNext();
94 | var charCode2 = enumerator.current;
95 |
96 | output.append(String.fromCharCode(((charCode & 31) << 6) | (charCode2 & 63)));
97 | }
98 | else
99 | {
100 | enumerator.moveNext();
101 | var charCode2 = enumerator.current;
102 |
103 | enumerator.moveNext();
104 | var charCode3 = enumerator.current;
105 |
106 | output.append(String.fromCharCode(((charCode & 15) << 12) | ((charCode2 & 63) << 6) | (charCode3 & 63)));
107 | }
108 | }
109 |
110 | return output.toString();
111 | }
112 | }
113 |
114 |
115 | function Utf8EncodeEnumerator(input)
116 | {
117 | this._input = input;
118 | this._index = -1;
119 | this._buffer = [];
120 | }
121 |
122 | Utf8EncodeEnumerator.prototype =
123 | {
124 | current: Number.NaN,
125 |
126 | moveNext: function()
127 | {
128 | if (this._buffer.length > 0)
129 | {
130 | this.current = this._buffer.shift();
131 | return true;
132 | }
133 | else if (this._index >= (this._input.length - 1))
134 | {
135 | this.current = Number.NaN;
136 | return false;
137 | }
138 | else
139 | {
140 | var charCode = this._input.charCodeAt(++this._index);
141 |
142 | // "\r\n" -> "\n"
143 | //
144 | if ((charCode == 13) && (this._input.charCodeAt(this._index + 1) == 10))
145 | {
146 | charCode = 10;
147 | this._index += 2;
148 | }
149 |
150 | if (charCode < 128)
151 | {
152 | this.current = charCode;
153 | }
154 | else if ((charCode > 127) && (charCode < 2048))
155 | {
156 | this.current = (charCode >> 6) | 192;
157 | this._buffer.push((charCode & 63) | 128);
158 | }
159 | else
160 | {
161 | this.current = (charCode >> 12) | 224;
162 | this._buffer.push(((charCode >> 6) & 63) | 128);
163 | this._buffer.push((charCode & 63) | 128);
164 | }
165 |
166 | return true;
167 | }
168 | }
169 | }
170 |
171 | function Base64DecodeEnumerator(input)
172 | {
173 | this._input = input;
174 | this._index = -1;
175 | this._buffer = [];
176 | }
177 |
178 | Base64DecodeEnumerator.prototype =
179 | {
180 | current: 64,
181 |
182 | moveNext: function()
183 | {
184 | if (this._buffer.length > 0)
185 | {
186 | this.current = this._buffer.shift();
187 | return true;
188 | }
189 | else if (this._index >= (this._input.length - 1))
190 | {
191 | this.current = 64;
192 | return false;
193 | }
194 | else
195 | {
196 | var enc1 = Base64.codex.indexOf(this._input.charAt(++this._index));
197 | var enc2 = Base64.codex.indexOf(this._input.charAt(++this._index));
198 | var enc3 = Base64.codex.indexOf(this._input.charAt(++this._index));
199 | var enc4 = Base64.codex.indexOf(this._input.charAt(++this._index));
200 |
201 | var chr1 = (enc1 << 2) | (enc2 >> 4);
202 | var chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
203 | var chr3 = ((enc3 & 3) << 6) | enc4;
204 |
205 | this.current = chr1;
206 |
207 | if (enc3 != 64)
208 | this._buffer.push(chr2);
209 |
210 | if (enc4 != 64)
211 | this._buffer.push(chr3);
212 |
213 | return true;
214 | }
215 | }
216 | };
217 |
--------------------------------------------------------------------------------
/lib/countdown.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | countdown.js v2.6.0 http://countdownjs.org
3 | Copyright (c)2006-2014 Stephen M. McKamey.
4 | Licensed under The MIT License.
5 | */
6 | var module,countdown=function(v){function A(a,b){var c=a.getTime();a.setMonth(a.getMonth()+b);return Math.round((a.getTime()-c)/864E5)}function w(a){var b=a.getTime(),c=new Date(b);c.setMonth(a.getMonth()+1);return Math.round((c.getTime()-b)/864E5)}function x(a,b){b=b instanceof Date||null!==b&&isFinite(b)?new Date(+b):new Date;if(!a)return b;var c=+a.value||0;if(c)return b.setTime(b.getTime()+c),b;(c=+a.milliseconds||0)&&b.setMilliseconds(b.getMilliseconds()+c);(c=+a.seconds||0)&&b.setSeconds(b.getSeconds()+
7 | c);(c=+a.minutes||0)&&b.setMinutes(b.getMinutes()+c);(c=+a.hours||0)&&b.setHours(b.getHours()+c);(c=+a.weeks||0)&&(c*=7);(c+=+a.days||0)&&b.setDate(b.getDate()+c);(c=+a.months||0)&&b.setMonth(b.getMonth()+c);(c=+a.millennia||0)&&(c*=10);(c+=+a.centuries||0)&&(c*=10);(c+=+a.decades||0)&&(c*=10);(c+=+a.years||0)&&b.setFullYear(b.getFullYear()+c);return b}function D(a,b){return y(a)+(1===a?p[b]:q[b])}function n(){}function k(a,b,c,e,l,d){0<=a[c]&&(b+=a[c],delete a[c]);b/=l;if(1>=b+1)return 0;if(0<=a[e]){a[e]=
8 | +(a[e]+b).toFixed(d);switch(e){case "seconds":if(60!==a.seconds||isNaN(a.minutes))break;a.minutes++;a.seconds=0;case "minutes":if(60!==a.minutes||isNaN(a.hours))break;a.hours++;a.minutes=0;case "hours":if(24!==a.hours||isNaN(a.days))break;a.days++;a.hours=0;case "days":if(7!==a.days||isNaN(a.weeks))break;a.weeks++;a.days=0;case "weeks":if(a.weeks!==w(a.refMonth)/7||isNaN(a.months))break;a.months++;a.weeks=0;case "months":if(12!==a.months||isNaN(a.years))break;a.years++;a.months=0;case "years":if(10!==
9 | a.years||isNaN(a.decades))break;a.decades++;a.years=0;case "decades":if(10!==a.decades||isNaN(a.centuries))break;a.centuries++;a.decades=0;case "centuries":if(10!==a.centuries||isNaN(a.millennia))break;a.millennia++;a.centuries=0}return 0}return b}function B(a,b,c,e,l,d){var f=new Date;a.start=b=b||f;a.end=c=c||f;a.units=e;a.value=c.getTime()-b.getTime();0>a.value&&(f=c,c=b,b=f);a.refMonth=new Date(b.getFullYear(),b.getMonth(),15,12,0,0);try{a.millennia=0;a.centuries=0;a.decades=0;a.years=c.getFullYear()-
10 | b.getFullYear();a.months=c.getMonth()-b.getMonth();a.weeks=0;a.days=c.getDate()-b.getDate();a.hours=c.getHours()-b.getHours();a.minutes=c.getMinutes()-b.getMinutes();a.seconds=c.getSeconds()-b.getSeconds();a.milliseconds=c.getMilliseconds()-b.getMilliseconds();var g;0>a.milliseconds?(g=s(-a.milliseconds/1E3),a.seconds-=g,a.milliseconds+=1E3*g):1E3<=a.milliseconds&&(a.seconds+=m(a.milliseconds/1E3),a.milliseconds%=1E3);0>a.seconds?(g=s(-a.seconds/60),a.minutes-=g,a.seconds+=60*g):60<=a.seconds&&(a.minutes+=
11 | m(a.seconds/60),a.seconds%=60);0>a.minutes?(g=s(-a.minutes/60),a.hours-=g,a.minutes+=60*g):60<=a.minutes&&(a.hours+=m(a.minutes/60),a.minutes%=60);0>a.hours?(g=s(-a.hours/24),a.days-=g,a.hours+=24*g):24<=a.hours&&(a.days+=m(a.hours/24),a.hours%=24);for(;0>a.days;)a.months--,a.days+=A(a.refMonth,1);7<=a.days&&(a.weeks+=m(a.days/7),a.days%=7);0>a.months?(g=s(-a.months/12),a.years-=g,a.months+=12*g):12<=a.months&&(a.years+=m(a.months/12),a.months%=12);10<=a.years&&(a.decades+=m(a.years/10),a.years%=
12 | 10,10<=a.decades&&(a.centuries+=m(a.decades/10),a.decades%=10,10<=a.centuries&&(a.millennia+=m(a.centuries/10),a.centuries%=10)));b=0;!(e&1024)||b>=l?(a.centuries+=10*a.millennia,delete a.millennia):a.millennia&&b++;!(e&512)||b>=l?(a.decades+=10*a.centuries,delete a.centuries):a.centuries&&b++;!(e&256)||b>=l?(a.years+=10*a.decades,delete a.decades):a.decades&&b++;!(e&128)||b>=l?(a.months+=12*a.years,delete a.years):a.years&&b++;!(e&64)||b>=l?(a.months&&(a.days+=A(a.refMonth,a.months)),delete a.months,
13 | 7<=a.days&&(a.weeks+=m(a.days/7),a.days%=7)):a.months&&b++;!(e&32)||b>=l?(a.days+=7*a.weeks,delete a.weeks):a.weeks&&b++;!(e&16)||b>=l?(a.hours+=24*a.days,delete a.days):a.days&&b++;!(e&8)||b>=l?(a.minutes+=60*a.hours,delete a.hours):a.hours&&b++;!(e&4)||b>=l?(a.seconds+=60*a.minutes,delete a.minutes):a.minutes&&b++;!(e&2)||b>=l?(a.milliseconds+=1E3*a.seconds,delete a.seconds):a.seconds&&b++;if(!(e&1)||b>=l){var h=k(a,0,"milliseconds","seconds",1E3,d);if(h&&(h=k(a,h,"seconds","minutes",60,d))&&(h=
14 | k(a,h,"minutes","hours",60,d))&&(h=k(a,h,"hours","days",24,d))&&(h=k(a,h,"days","weeks",7,d))&&(h=k(a,h,"weeks","months",w(a.refMonth)/7,d))){e=h;var n,p=a.refMonth,q=p.getTime(),r=new Date(q);r.setFullYear(p.getFullYear()+1);n=Math.round((r.getTime()-q)/864E5);if(h=k(a,e,"months","years",n/w(a.refMonth),d))if(h=k(a,h,"years","decades",10,d))if(h=k(a,h,"decades","centuries",10,d))if(h=k(a,h,"centuries","millennia",10,d))throw Error("Fractional unit overflow");}}}finally{delete a.refMonth}return a}
15 | function d(a,b,c,e,d){var f;c=+c||222;e=0d?Math.round(d):20:0;var k=null;"function"===typeof a?(f=a,a=null):a instanceof Date||(null!==a&&isFinite(a)?a=new Date(+a):("object"===typeof k&&(k=a),a=null));var g=null;"function"===typeof b?(f=b,b=null):b instanceof Date||(null!==b&&isFinite(b)?b=new Date(+b):("object"===typeof b&&(g=b),b=null));k&&(a=x(k,b));g&&(b=x(g,a));if(!a&&!b)return new n;if(!f)return B(new n,a,b,c,e,d);var k=c&1?1E3/30:c&2?1E3:c&4?6E4:c&8?36E5:c&16?864E5:6048E5,
16 | h,g=function(){f(B(new n,a,b,c,e,d),h)};g();return h=setInterval(g,k)}var s=Math.ceil,m=Math.floor,p,q,r,t,u,f,y,z;n.prototype.toString=function(a){var b=z(this),c=b.length;if(!c)return a?""+a:u;if(1===c)return b[0];a=r+b.pop();return b.join(t)+a};n.prototype.toHTML=function(a,b){a=a||"span";var c=z(this),e=c.length;if(!e)return(b=b||u)?"\x3c"+a+"\x3e"+b+"\x3c/"+a+"\x3e":b;for(var d=0;d=d;d++)p[d]=b[d]||p[d],q[d]=c[d]||q[d]}"string"===typeof a.last&&(r=a.last);"string"===typeof a.delim&&(t=a.delim);"string"===typeof a.empty&&(u=a.empty);"function"===typeof a.formatNumber&&(y=a.formatNumber);"function"===typeof a.formatter&&(f=a.formatter)}},C=d.resetFormat=
19 | function(){p=" millisecond; second; minute; hour; day; week; month; year; decade; century; millennium".split(";");q=" milliseconds; seconds; minutes; hours; days; weeks; months; years; decades; centuries; millennia".split(";");r=" and ";t=", ";u="";y=function(a){return a};f=D};d.setLabels=function(a,b,c,d,f,k,m){E({singular:a,plural:b,last:c,delim:d,empty:f,formatNumber:k,formatter:m})};d.resetLabels=C;C();v&&v.exports?v.exports=d:"function"===typeof window.define&&"undefined"!==typeof window.define.amd&&
20 | window.define("countdown",[],function(){return d});return d}(module);
--------------------------------------------------------------------------------
/lib/curve/curve.min.js:
--------------------------------------------------------------------------------
1 | /* Curve extension for canvas 2.3.1
2 | * Epistemex (c) 2013-2014
3 | * License: MIT
4 | */
5 | CanvasRenderingContext2D.prototype.curve=CanvasRenderingContext2D.prototype.curve||function(h,t,f,c){t=(typeof t==="number")?t:0.5;f=f?f:25;var j,d=1,e=h.length,n=0,m=(e-2)*f+2+(c?2*f:0),k=new Float32Array(m),a=new Float32Array((f+2)*4),b=4;j=h.slice(0);if(c){j.unshift(h[e-1]);j.unshift(h[e-2]);j.push(h[0],h[1])}else{j.unshift(h[1]);j.unshift(h[0]);j.push(h[e-2],h[e-1])}a[0]=1;for(;d
5 |
6 | (c) 2014 Stuart Knightley, David Duponchel
7 | Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
8 |
9 | */
10 | !function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g 1) {
49 | const options = Object.assign({canvas: this}, this.__dict_activeSelectionTL);
50 | aGroup = new fabric.ActiveSelection(group.reverse(), options);
51 | // aGroup = new fabric.ActiveSelectionTL(group.reverse(), options);
52 | this.setActiveObject(aGroup, e);
53 | }
54 | }).bind(fabricCanvas);
55 |
56 |
57 |
58 |
59 |
60 |
61 | //easy
62 | fabricCanvas.createEasyActiveSelectionTL = (function(arr_fObj) {
63 | logger.log("logFabric", "createEasyActiveSelectionTL");
64 |
65 | const options = Object.assign({canvas: this}, this.__dict_activeSelectionTL);
66 | return new fabric.ActiveSelection(arr_fObj, options);
67 | // return new fabric.ActiveSelectionTL(arr_fObj, options);
68 |
69 | }).bind(fabricCanvas);
70 |
71 | }
72 |
73 |
--------------------------------------------------------------------------------
/lib/fabric+brushClone.js:
--------------------------------------------------------------------------------
1 | fabric.BaseBrush.prototype.deepClone = function() {
2 |
3 | const brush__src = this;
4 |
5 | //remove circular dependencies before serializing
6 | const canvas = this.canvas;
7 | brush__src.canvas = null;
8 |
9 | const parentBrush = brush__src.parentBrush;
10 | brush__src.parentBrush = null;
11 |
12 | var dict_infiltration = {};
13 | if("setInfiltration" in brush__src) {
14 | dict_infiltration = Object.assign({}, brush__src.dict_infiltration); //SHU TODO: deep copy here too
15 | Object.entries(dict_infiltration).forEach(([k,v]) => {
16 | brush__src.removeInfiltration(k);
17 | });
18 | }
19 |
20 | // logger.log("logComb", "deepClone", "before JSON(JSON())", "brush__src:", brush__src);
21 |
22 | //deep clone
23 | const proto = Object.getPrototypeOf(brush__src);
24 | const brush__clone = Object.create(proto);
25 | Object.assign(brush__clone, JSON.parse(JSON.stringify(brush__src)));
26 |
27 | const arr_method = Utils.getMethods(brush__clone);
28 | const arr_native = Object.entries(new Object()).filter(([k,v]) => {
29 | return !(v instanceof Function);
30 | });
31 | arr_method.filter(funcName => {
32 | return arr_native.includes(funcName);
33 | }).forEach(funcName => {
34 | const func = brush__src[funcName];
35 | brush__clone[funcName] = deserialize(serialize(func));
36 | });
37 |
38 | if("setInfiltration" in brush__src) {
39 | DecoratorUtils.upgrade_decorator__with_infiltration(brush__clone);
40 | }
41 |
42 |
43 |
44 | //restore circular dependencies
45 | Object.entries(dict_infiltration).forEach(([k,v]) => {
46 | brush__src.setInfiltration(k,v);
47 | brush__clone.setInfiltration(k,v);
48 | });
49 |
50 | brush__clone.canvas = canvas;
51 | brush__src.canvas = canvas;
52 |
53 | brush__clone.parentBrush = parentBrush;
54 | brush__src.parentBrush = parentBrush;
55 |
56 |
57 | return brush__clone;
58 | };
--------------------------------------------------------------------------------
/lib/fabric+brushPreview.js:
--------------------------------------------------------------------------------
1 | function installFabricBrushPreviewUpgrade(fabricCanvas) {
2 | logger.log("logFabric", "installFabricBrushPreviewUpgrade");
3 |
4 | fabricCanvas._onMouseMoveInDrawingMode = (function(e) {
5 | // logger.log("logBrushPreview", "_onMouseMoveInDrawingMode", "this:", this, "e:", e);
6 |
7 | const fabricCanvas = this;
8 |
9 | var pointer = this.getPointer(e);
10 | if (fabricCanvas._isCurrentlyDrawing) {
11 | fabricCanvas.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer });
12 | } else {
13 | // logger.log("logPreview", "_onMouseMoveInDrawingMode", e, this.freeDrawingBrush);
14 | if("onMouseMove__preview" in fabricCanvas.freeDrawingBrush) {
15 | fabricCanvas.freeDrawingBrush.onMouseMove__preview(pointer, { e: e, pointer: pointer });
16 | }
17 | }
18 | fabricCanvas.setCursor(fabricCanvas.freeDrawingCursor);
19 | fabricCanvas._handleEvent(e, 'move');
20 | }).bind(fabricCanvas);
21 |
22 | }
23 |
24 | class PreviewBrush {
25 |
26 | static decorate(brush__src) {
27 |
28 | //get class of brush
29 | const class__src = brush__src.constructor;
30 | // logger.log("logBrushUpgrade", "class__src:", class__src);
31 |
32 | class PreviewXBrush extends DecorationUtils.createDecoratorClass(class__src, {
33 |
34 | getOpacity__preview: function() {
35 | return 0.32;
36 | },
37 |
38 | getColor__preview: function() {
39 | // logger.log("logPreview", this.debug__name, "this.color", this.color);
40 | const fColor__clone = new fabric.Color(this.color);
41 |
42 | const opacity__preview = this.getOpacity__preview();
43 | const fColor__preview = fColor__clone.setAlpha(opacity__preview);
44 |
45 | const color__preview = fColor__preview.toRgba();
46 |
47 | return color__preview;
48 | },
49 |
50 | _setBrushStyles__preview: function(ctx) {
51 | // logger.log("logComb", "_setBrushStyles__preview", this);
52 | this._setBrushStyles(ctx);
53 |
54 | ctx.strokeStyle = this.getColor__preview();
55 | // ctx.fillStyle = this.getColor__preview();
56 | },
57 |
58 | onMouseMove__preview: function(pointer, options) {
59 | // logger.log("logPreview", "onMouseMove__preview", brush, pointer, options);
60 |
61 | // if(DecorationUtils.getWrappedObj(this).onMouseMove__preview != null) {
62 | // DecorationUtils.getWrappedObj(this).onMouseMove__preview(pointer, options);
63 | // } else {
64 | var p = new fabric.Point(pointer.x, pointer.y);
65 |
66 | // const ctx = this.canvas.contextContainer;
67 | const ctx = this.canvas.contextTop;
68 |
69 | if(this.parentBrush == null) {
70 | this.canvas.clearContext(ctx);
71 | }
72 |
73 | // ctx.save();
74 |
75 | this._setBrushStyles__preview(ctx);
76 |
77 | ctx.beginPath();
78 | ctx.moveTo(p.x, p.y);
79 | ctx.lineTo(p.x, p.y);
80 | ctx.stroke();
81 |
82 | // ctx.restore();
83 | // }
84 |
85 | },
86 |
87 | clearPreview: function() {
88 | const ctx = this.canvas.contextTop;
89 | if(this.parentBrush == null) {
90 | this.canvas.clearContext(ctx);
91 | }
92 | },
93 |
94 | _prepareForDrawing: function(pointer) {
95 | // logger.log("logPreview", "_prepareForDrawing", pointer);
96 | const brush = this;
97 |
98 | brush.clearPreview();
99 | DecorationUtils.getWrappedObj(brush)._prepareForDrawing(pointer);
100 | },
101 |
102 | }, PreviewBrush) {}
103 |
104 | const brush__preview = PreviewXBrush.decorate(brush__src);
105 | return brush__preview;
106 | }
107 |
108 | }
--------------------------------------------------------------------------------
/lib/fabric+canvas2D_willReadFrequently.js:
--------------------------------------------------------------------------------
1 | function installFabricUpgrade_Canvas2DWillReadFrequently(fabric) {
2 | //logger.log("logFabric", "installFabricUpgrade_Canvas2DWillReadFrequently");
3 |
4 | //rewrite all initial calls to getContext(...) to getContext(..., { willReadFrequently: true })
5 |
6 | fabric.StaticCanvas.prototype._createLowerCanvas = function (canvasEl) {
7 | // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node
8 | if (canvasEl && canvasEl.getContext) {
9 | this.lowerCanvasEl = canvasEl;
10 | }
11 | else {
12 | this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement();
13 | }
14 |
15 | fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas');
16 | this._originalCanvasStyle = this.lowerCanvasEl.style;
17 | if (this.interactive) {
18 | this._applyCanvasStyle(this.lowerCanvasEl);
19 | }
20 |
21 | //---
22 | // this.contextContainer = this.lowerCanvasEl.getContext('2d');
23 | //---
24 | //+++
25 | this.contextContainer = this.lowerCanvasEl.getContext('2d', { willReadFrequently: true });
26 | //+++
27 | };
28 |
29 | fabric.Canvas.prototype._createUpperCanvas = function () {
30 | var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ''),
31 | lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl;
32 |
33 | // there is no need to create a new upperCanvas element if we have already one.
34 | if (upperCanvasEl) {
35 | upperCanvasEl.className = '';
36 | }
37 | else {
38 | upperCanvasEl = this._createCanvasElement();
39 | this.upperCanvasEl = upperCanvasEl;
40 | }
41 | fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);
42 |
43 | this.wrapperEl.appendChild(upperCanvasEl);
44 |
45 | this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl);
46 | this._applyCanvasStyle(upperCanvasEl);
47 |
48 | //---
49 | // this.contextTop = upperCanvasEl.getContext('2d');
50 | //---
51 | //+++
52 | this.contextTop = upperCanvasEl.getContext('2d', { willReadFrequently: true });
53 | //+++
54 | };
55 |
56 | fabric.Canvas.prototype._createCacheCanvas = function () {
57 | this.cacheCanvasEl = this._createCanvasElement();
58 | this.cacheCanvasEl.setAttribute('width', this.width);
59 | this.cacheCanvasEl.setAttribute('height', this.height);
60 |
61 | //---
62 | // this.contextCache = this.cacheCanvasEl.getContext('2d');
63 | //---
64 | //+++
65 | this.contextCache = this.cacheCanvasEl.getContext('2d', { desynchronized: true, willReadFrequently: true });
66 | //+++
67 | };
68 |
69 | //a fabric object 'is' a cached canvas
70 | fabric.Object.prototype._createCacheCanvas = function() {
71 | this._cacheProperties = {};
72 | this._cacheCanvas = fabric.util.createCanvasElement();
73 |
74 | //---
75 | // this._cacheContext = this._cacheCanvas.getContext('2d');
76 | //---
77 | //+++
78 | this._cacheContext = this._cacheCanvas.getContext('2d', { desynchronized: true, willReadFrequently: true });
79 | //+++
80 |
81 | this._updateCacheCanvas();
82 | // if canvas gets created, is empty, so dirty.
83 | this.dirty = true;
84 | };
85 |
86 | //debug
87 | // const isTransparent__orig = fabric.util.isTransparent;
88 | // fabric.util.isTransparent = function(ctx, x, y, tolerance) {
89 | // // logger.log("logFabricUtil", "isTransparent", "ctx:", ctx);
90 |
91 | // const isContextContainer = (ctx == fabricIntegration.fabricCanvas.contextContainer);
92 | // const isContextTop = (ctx == fabricIntegration.fabricCanvas.contextTop);
93 | // const isContextCache = (ctx == fabricIntegration.fabricCanvas.contextCache);
94 | // logger.log("logFabricUtil", "isTransparent", "isContextContainer:", isContextContainer);
95 | // logger.log("logFabricUtil", "isTransparent", "isContextTop:", isContextTop);
96 | // logger.log("logFabricUtil", "isTransparent", "isContextCache:", isContextCache);
97 |
98 | // if(!isContextContainer && !isContextTop && !isContextCache) {
99 | // logger.trace("logFabricUtil", "isTransparent", "ctx:", ctx);
100 | // }
101 |
102 | // isTransparent__orig(ctx, x, y, tolerance);
103 | // };
104 |
105 |
106 | /*
107 | fabric.WebglFilterBackend.prototype.createWebGLCanvas = function(width, height) {
108 | var canvas = fabric.util.createCanvasElement();
109 | canvas.width = width;
110 | canvas.height = height;
111 | var glOptions = {
112 | alpha: true,
113 | premultipliedAlpha: false,
114 | depth: false,
115 | stencil: false,
116 | antialias: false
117 | },
118 | gl = canvas.getContext('webgl', glOptions);
119 | if (!gl) {
120 | gl = canvas.getContext('experimental-webgl', glOptions);
121 | }
122 | if (!gl) {
123 | return;
124 | }
125 | gl.clearColor(0, 0, 0, 0);
126 | // this canvas can fire webglcontextlost and webglcontextrestored
127 | this.canvas = canvas;
128 | this.gl = gl;
129 | };
130 | */
131 |
132 |
133 | }
134 |
135 |
--------------------------------------------------------------------------------
/lib/fabric+contentFlip.js:
--------------------------------------------------------------------------------
1 | function installFabricUpgrade_fabricXcontentFlip(fabric) {
2 | //logger.log("logFabric", "installFabricUpgrade_fabricXcontentFlip");
3 |
4 | //contentFlip: flip what is inside object, don't change object's transform
5 |
6 | fabric.Object.prototype.transform = function(ctx) {
7 | var needFullTransform = (this.group && !this.group._transformDone) ||
8 | (this.group && this.canvas && ctx === this.canvas.contextTop);
9 | var m = this.calcTransformMatrix(!needFullTransform);
10 |
11 | //+++
12 | if(this.contentFlipX) {
13 | const m__contentFlipX = [-1, 0 , 0 , 1 , 0, 0];
14 | m = fabric.util.multiplyTransformMatrices(m, m__contentFlipX);
15 | }
16 | if(this.contentFlipY) {
17 | const m__contentFlipY = [1, 0 , 0 , -1 , 0, 0];
18 | m = fabric.util.multiplyTransformMatrices(m, m__contentFlipY);
19 | }
20 | //+++
21 |
22 | ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);
23 | };
24 |
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/lib/fabric+debug.js:
--------------------------------------------------------------------------------
1 | function installFabricUpgrade_fabricXdebug(fabric) {
2 | //logger.log("logFabric", "installFabricUpgrade_fabricXdebug");
3 |
4 | //sometimes you need to log even more stuff
5 |
6 | // fabric.Canvas.prototype._fireSelectionEvents__old = fabric.Canvas.prototype._fireSelectionEvents;
7 | // fabric.Canvas.prototype._fireSelectionEvents = function(oldObjects, e) {
8 | // logger.trace("logFabricDebug", "fabric.Canvas.prototype._fireSelectionEvents", oldObjects, e);
9 | // this._fireSelectionEvents__old(oldObjects, e);
10 | // };
11 |
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/lib/fabric+renderZones.js:
--------------------------------------------------------------------------------
1 | function installFabricUpgrade_fabricXrenderZones(fabric) {
2 | //logger.log("logFabric", "installFabricUpgrade_fabricXrenderZones");
3 |
4 | //selection X renderZones:
5 | // give top priority to current zLevel
6 | // if nothing at current zLevel, search in neighboring zLevels
7 | // but don't go too deep or too high
8 |
9 | fabric.Canvas.prototype.findTarget = function (e, skipGroup) {
10 | if (this.skipTargetFind) {
11 | return;
12 | }
13 |
14 | var ignoreZoom = true,
15 | pointer = this.getPointer(e, ignoreZoom),
16 | activeObject = this._activeObject,
17 | aObjects = this.getActiveObjects(),
18 | activeTarget, activeTargetSubs,
19 | isTouch = fabric.util.isTouchEvent(e),
20 | shouldLookForActive = (aObjects.length > 1 && !skipGroup) || aObjects.length === 1;
21 |
22 | // first check current group (if one exists)
23 | // active group does not check sub targets like normal groups.
24 | // if active group just exits.
25 | this.targets = [];
26 |
27 | // if we hit the corner of an activeObject, let's return that.
28 | if (shouldLookForActive && activeObject._findTargetCorner(pointer, isTouch)) {
29 | return activeObject;
30 | }
31 | if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {
32 | return activeObject;
33 | }
34 | if (aObjects.length === 1 &&
35 | activeObject === this._searchPossibleTargets([activeObject], pointer)) {
36 | if (!this.preserveObjectStacking) {
37 | return activeObject;
38 | }
39 | else {
40 | activeTarget = activeObject;
41 | activeTargetSubs = this.targets;
42 | this.targets = [];
43 | }
44 | }
45 | //---
46 | // var target = this._searchPossibleTargets(this._objects, pointer);
47 | //---
48 | //+++
49 | const arr_fObj__candidateSelectable = this.getArr_fObj__candidateSelectable();
50 | var target = this._searchPossibleTargets(arr_fObj__candidateSelectable, pointer);
51 | //+++
52 | if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {
53 | target = activeTarget;
54 | this.targets = activeTargetSubs;
55 | }
56 | return target;
57 | };
58 |
59 | fabric.Canvas.prototype.getArr_fObj__candidateSelectable = function () {
60 | var outArr;
61 |
62 | const dZLevel_number__deep = 5;
63 | const dZLevel_number__high = 0;
64 |
65 | if(fabricIntegration) { //SHU: /!\ global var
66 |
67 | const infiniteCanvas = fabricIntegration.infiniteCanvas;
68 | const zLevel_number__current = infiniteCanvas.range__zLevel_number__existing.current;
69 |
70 | const zLevel_number__min = zLevel_number__current - dZLevel_number__deep;
71 | const zLevel_number__max = zLevel_number__current + dZLevel_number__high;
72 |
73 | const arr_dict_zPixel__existing = Object.values(infiniteCanvas.dict_dict_zPixel__existing__nonPooled);
74 |
75 | const arr_dict_zPixel__filtered = arr_dict_zPixel__existing.filter((dict_zPixel) => {
76 | const zPixelCoords = dict_zPixel.zPixelCoords;
77 | const zLevel_number = zPixelCoords.zLevel.toNumber();
78 |
79 | const isInteresting = (zLevel_number__min <= zLevel_number) && (zLevel_number < zLevel_number__max);
80 | return isInteresting;
81 | });
82 |
83 | const dict_icObj__candidateSelectable = arr_dict_zPixel__filtered.reduce((acc, dict_zPixel) => {
84 | const zPixelCoords = dict_zPixel.zPixelCoords;
85 | const key__zPixelCoords = zPixelUtils.createKeyForZPixelCoords(zPixelCoords);
86 | const dict_renderZone = infiniteCanvas.dict_dict_renderZone__nonPooled[key__zPixelCoords];
87 |
88 | if(dict_renderZone) {
89 | const dict_icObj = dict_renderZone.dict_icObj;
90 | Object.assign(acc, dict_icObj);
91 | }
92 |
93 | return acc;
94 | }, {});
95 |
96 | const arr_icObj__candidateSelectable = Object.values(dict_icObj__candidateSelectable)
97 | //bugfix: rectangle selection breaks zChallenge (temporary)
98 | .filter((icObj) => !icObj.isLocked);
99 |
100 | // const arr_icObj__perfect = Object.values(infiniteCanvas.dict_icObj__perfect);
101 | // const arr_icObj__candidateSelectable = [...Object.values(dict_icObj__candidateSelectable) , ...arr_icObj__perfect];
102 |
103 | const arr_fObj__candidateSelectable = arr_icObj__candidateSelectable.map((id__icObj) => {
104 | const fObj = fabricIntegration.getFObjFor_id__icObj(id__icObj);
105 | return fObj;
106 | }).filter((fObj) => (fObj != null));
107 |
108 | outArr = arr_fObj__candidateSelectable;
109 |
110 | } else {
111 | outArr = this._objects;
112 | }
113 |
114 | return outArr;
115 | };
116 |
117 |
118 | // fabric.Canvas.prototype._searchPossibleTargets = function(objects, pointer) {
119 | // // Cache all targets where their bounding box contains point.
120 | // var target, i = objects.length, subTarget;
121 | // // Do not check for currently grouped objects, since we check the parent group itself.
122 | // // until we call this function specifically to search inside the activeGroup
123 | // while (i--) {
124 | // var objToCheck = objects[i];
125 | // var pointerToUse = objToCheck.group ?
126 | // this._normalizePointer(objToCheck.group, pointer) : pointer;
127 | // if (this._checkTarget(pointerToUse, objToCheck, pointer)) {
128 | // target = objects[i];
129 | // if (target.subTargetCheck && target instanceof fabric.Group) {
130 | // subTarget = this._searchPossibleTargets(target._objects, pointer);
131 | // subTarget && this.targets.push(subTarget);
132 | // }
133 | // break;
134 | // }
135 | // }
136 | // return target;
137 | // };
138 |
139 | // /**
140 | // * Checks point is inside the object.
141 | // * @param {Object} [pointer] x,y object of point coordinates we want to check.
142 | // * @param {fabric.Object} obj Object to test against
143 | // * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.
144 | // * @return {Boolean} true if point is contained within an area of given object
145 | // * @private
146 | // */
147 | // _checkTarget: function(pointer, obj, globalPointer) {
148 | // if (obj &&
149 | // obj.visible &&
150 | // obj.evented &&
151 | // // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html
152 | // // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html
153 | // obj.containsPoint(pointer)
154 | // ) {
155 | // if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {
156 | // var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y);
157 | // if (!isTransparent) {
158 | // return true;
159 | // }
160 | // }
161 | // else {
162 | // return true;
163 | // }
164 | // }
165 | // },
166 |
167 | }
168 |
--------------------------------------------------------------------------------
/lib/fabric+straightStroke.js:
--------------------------------------------------------------------------------
1 | function installFabricStraightStrokeUpgrade(fabricCanvas) {
2 |
3 |
4 | }
5 |
6 | (function () {
7 | /**
8 | * StraightStrokePencilBrush class (decorator)
9 | * @class fabric.StraightStrokePencilBrush
10 | * @extends fabric.PencilBrush
11 | *
12 | */
13 | class StraightStrokePencilBrush extends DecorationUtils.createDecoratorClass(fabric.PencilBrush, {
14 |
15 |
16 | // drawStraightLine: true,
17 | // straightLineKey: "shiftKey",
18 |
19 | createMouseEvent__masquerade: function(eType, mouseEvent) {
20 | // logger.log("logSSPencilBrush", "createMouseEvent__masquerade", eType, mouseEvent);
21 |
22 | const straightLineKey = DecorationUtils.getWrappedObj(this).straightLineKey;
23 | // logger.log("logSSPencilBrush", "straightLineKey:", straightLineKey);
24 |
25 | //------DOES NOT WORK--------
26 | // const dict__masquerade = Object.entries(mouseEvent).reduce((acc, [k, v]) => {
27 | // logger.log("logSSPencilBrush", "[k, v]:", [k, v]);
28 |
29 | // if(k == straightLineKey) {
30 | // logger.log("logSSPencilBrush", "k == straightLineKey");
31 | // acc[k] = true;
32 | // } else {
33 | // acc[k] = v;
34 | // }
35 |
36 | // return acc;
37 | // }, {});
38 |
39 | // const mouseEvent__masquerade = new MouseEvent(eType, dict__masquerade);
40 | // logger.log("logSSPencilBrush", "mouseEvent__masquerade:", mouseEvent__masquerade);
41 | //----------------------------
42 |
43 | //WORKS
44 | const mouseEvent__masquerade = new MouseEvent(eType, {
45 | // isTrusted: false,
46 | isTrusted: true,
47 |
48 | altKey : mouseEvent.altKey,
49 | bubbles : mouseEvent.bubbles,
50 | button : mouseEvent.button,
51 | buttons : mouseEvent.buttons,
52 | cancelBubble : mouseEvent.cancelBubble,
53 | cancelable : mouseEvent.cancelable,
54 | clientX: mouseEvent.clientX,
55 | clientY: mouseEvent.clientY,
56 | composed: mouseEvent.composed,
57 | ctrlKey: mouseEvent.ctrlKey,
58 | currentTarget: mouseEvent.currentTarget,
59 | defaultPrevented: mouseEvent.defaultPrevented,
60 | detail: mouseEvent.detail,
61 | eventPhase: mouseEvent.eventPhase,
62 | fromElement: mouseEvent.fromElement,
63 | layerX: mouseEvent.layerX,
64 | layerY: mouseEvent.layerY,
65 | metaKey: mouseEvent.metaKey,
66 | movementX: mouseEvent.movementX,
67 | movementY: mouseEvent.movementY,
68 | offsetX: mouseEvent.offsetX,
69 | offsetY: mouseEvent.offsetY,
70 | pageX: mouseEvent.pageX,
71 | pageY: mouseEvent.pageY,
72 | relatedTarget: mouseEvent.relatedTarget,
73 | returnValue: mouseEvent.returnValue,
74 | screenX: mouseEvent.screenX,
75 | screenY: mouseEvent.screenY,
76 | shiftKey: mouseEvent.shiftKey,
77 | sourceCapabilities: mouseEvent.sourceCapabilities,
78 | srcElement: mouseEvent.srcElement,
79 | target: mouseEvent.target,
80 | timeStamp: mouseEvent.timeStamp,
81 | toElement: mouseEvent.toElement,
82 | view: mouseEvent.view,
83 | which: mouseEvent.which,
84 | x: mouseEvent.x,
85 | y: mouseEvent.y,
86 |
87 | //injection
88 | [straightLineKey]: true,
89 | });
90 |
91 | return mouseEvent__masquerade;
92 | },
93 |
94 |
95 | onMouseDown: function(pointer, options) {
96 | // logger.log("logSSPencilBrush", "onMouseDown:", pointer, options);
97 |
98 | //force options.e[this.straightLineKey]:true
99 | const mouseEvent__src = options.e;
100 | const mouseEvent__masquerade = this.createMouseEvent__masquerade(mouseEvent__src.type, mouseEvent__src);
101 |
102 | const options__masquerade = Object.assign({}, options);
103 | options__masquerade.e = mouseEvent__masquerade;
104 |
105 | DecorationUtils.getWrappedObj(this).onMouseDown(pointer, options__masquerade);
106 | },
107 |
108 | onMouseMove: function(pointer, options) {
109 |
110 | //force options.e[this.straightLineKey]:true
111 | const mouseEvent__src = options.e;
112 | const mouseEvent__masquerade = this.createMouseEvent__masquerade(mouseEvent__src.type, mouseEvent__src);
113 |
114 | const options__masquerade = Object.assign({}, options);
115 | options__masquerade.e = mouseEvent__masquerade;
116 |
117 | DecorationUtils.getWrappedObj(this).onMouseMove(pointer, options__masquerade);
118 | },
119 |
120 | // onMouseUp: function(options) {
121 | // DecorationUtils.getWrappedObj(this).onMouseUp(options);
122 | // },
123 |
124 |
125 | }) {}
126 |
127 | StraightStrokePencilBrush.createInstance = function(fabricCanvas) {
128 | const brush__pencil = new fabric.PencilBrush(fabricCanvas);
129 |
130 | const brush__ssPencil = StraightStrokePencilBrush.decorate(brush__pencil, DecorationUtils.createInitializationDict({}));
131 |
132 | return brush__ssPencil;
133 | };
134 |
135 | fabric.StraightStrokePencilBrush = StraightStrokePencilBrush;
136 |
137 | })();
--------------------------------------------------------------------------------
/lib/fabric+zIndex.js:
--------------------------------------------------------------------------------
1 | function installFabricCanvasUpgrade__zIndex(fabricCanvas) {
2 | // logger.log("logFabric", "installFabricCanvasUpgrade__zIndex");
3 |
4 | fabricCanvas.render_below_zIndex = (function(ctx, zIndex__fabric) {
5 | // logger.trace("logFDZ", "fabricCanvas.render_below_zIndex", ctx, zIndex__fabric);
6 |
7 | const arr_fObj = this._objects;
8 |
9 | arr_fObj.slice(0,zIndex__fabric).forEach((fObj) => {
10 | fObj.render(ctx);
11 | });
12 |
13 | }).bind(fabricCanvas);
14 |
15 | fabricCanvas.render_above_zIndex = (function(ctx, zIndex__fabric) {
16 | // logger.trace("logFDZ", "fabricCanvas.render_above_zIndex", ctx, zIndex__fabric);
17 |
18 | const arr_fObj = this._objects;
19 |
20 | arr_fObj.slice(zIndex__fabric).forEach((fObj) => {
21 | fObj.render(ctx);
22 | });
23 |
24 | }).bind(fabricCanvas);
25 |
26 | fabricCanvas.render_between_zIndexes = (function(ctx, zIndex__fabric__1, zIndex__fabric__2) {
27 | // logger.trace("logFDZ", "fabricCanvas.render_between_zIndexes", ctx, zIndex__fabric__1, zIndex__fabric__2);
28 |
29 | const arr_fObj = this._objects;
30 |
31 | arr_fObj.slice(zIndex__fabric__1,zIndex__fabric__2).forEach((fObj) => {
32 | fObj.render(ctx);
33 | });
34 |
35 | }).bind(fabricCanvas);
36 |
37 | }
--------------------------------------------------------------------------------
/lib/fabric+zIndexPencilBrush.js:
--------------------------------------------------------------------------------
1 | (function () {
2 |
3 | class ZIndexPencilBrush extends DecorationUtils.createDecoratorClass(fabric.PencilBrush, {
4 |
5 | // zIndex: 0,
6 |
7 | zIndexWrapAround: function(ctx, dict_brushAndFunc) {
8 | const fabricCanvas = this.canvas;
9 |
10 | const brush = dict_brushAndFunc.brush;
11 | const func_in_between = dict_brushAndFunc.func;
12 |
13 | fabricCanvas.clearContext(ctx);
14 | fabricCanvas._renderBackground(ctx);
15 | fabricCanvas.render_below_zIndex(ctx, brush.zIndex);
16 | brush._setBrushStyles(ctx);
17 | func_in_between(ctx, brush);
18 | fabricCanvas.render_above_zIndex(ctx, brush.zIndex);
19 | },
20 |
21 | onMouseDown: function (pointer, options) {
22 | const brush = this;
23 |
24 | const ctx = brush.canvas.contextContainer;
25 | brush.zIndexWrapAround(ctx, {
26 | brush: brush,
27 | func: function(ctx, brush) {
28 | DecorationUtils.getWrappedObj(brush).onMouseDown(pointer, options);
29 | },
30 | });
31 |
32 | //bugfix: remove little dots on contextTop
33 | brush.canvas.clearContext(brush.canvas.contextTop);
34 | },
35 |
36 | onMouseMove: function (pointer, options) {
37 |
38 | //brush.canvas.contextTop has been replaced with brush.canvas.contextContainer
39 | function onMouseMove__old(brush, pointer, options) {
40 | if (!brush.canvas._isMainEvent(options.e)) {
41 | return;
42 | }
43 | brush.drawStraightLine = options.e[brush.straightLineKey];
44 | if (brush.limitedToCanvasSize === true && brush._isOutSideCanvas(pointer)) {
45 | return;
46 | }
47 | if (brush._captureDrawingPath(pointer) && brush._points.length > 1) {
48 | if (brush.needsFullRender()) {
49 | //redraw curve
50 | //clear bottom canvas
51 | brush.canvas.clearContext(brush.canvas.contextContainer);
52 | brush._render();
53 | }
54 | else {
55 | var points = brush._points, length = points.length, ctx = brush.canvas.contextContainer;
56 | // draw the curve update
57 | brush._saveAndTransform(ctx);
58 | if (brush.oldEnd) {
59 | ctx.beginPath();
60 | ctx.moveTo(brush.oldEnd.x, brush.oldEnd.y);
61 | }
62 | brush.oldEnd = brush._drawSegment(ctx, points[length - 2], points[length - 1], true);
63 | ctx.stroke();
64 | ctx.restore();
65 | }
66 | }
67 | }
68 |
69 | //new routine
70 | const brush = this;
71 | const ctx = brush.canvas.contextContainer;
72 | brush.zIndexWrapAround(ctx, {
73 | brush: brush,
74 | func: function(ctx, brush) {
75 | onMouseMove__old(brush, pointer, options);
76 | },
77 | });
78 |
79 | },
80 |
81 | needsFullRender: function() {
82 | return true;
83 | },
84 |
85 | //same as fabric.PencilBrush but with a different ctx
86 | _prepareForDrawing: function (pointer) {
87 | logger.log("logZIndexPencilBrush", "_prepareForDrawing", pointer);
88 | const ctx = this.canvas.contextContainer;
89 |
90 | var p = new fabric.Point(pointer.x, pointer.y);
91 | this._reset();
92 | this._addPoint(p);
93 | ctx.moveTo(p.x, p.y);
94 | },
95 |
96 |
97 | _reset: function() {
98 | function func_reset(ctx, brush) {
99 | brush._points = [];
100 | brush._setBrushStyles(ctx);
101 | brush._setShadow();
102 | brush._hasStraightLine = false;
103 | }
104 |
105 | const ctx = this.canvas.contextContainer;
106 | func_reset(ctx, this);
107 | },
108 |
109 |
110 | _render: function (ctx_ignored) {
111 | logger.log("logFD", "ZIndexPencilBrush::_render");
112 |
113 | const brush = this;
114 | const ctx = this.canvas.contextContainer;
115 | brush.zIndexWrapAround(ctx, {
116 | brush: brush,
117 | func: function(ctx, brush) {
118 | brush._saveAndTransform(ctx);
119 | DecorationUtils.getWrappedObj(brush)._render(ctx);
120 | ctx.restore();
121 | },
122 | });
123 | },
124 |
125 |
126 | _finalizeAndAddPath: function () {
127 | logger.trace("logFD", "ZIndexPencilBrush", "_finalizeAndAddPath");
128 | const brush = this;
129 |
130 | if(brush.drawingBout != null) {
131 | logger.log("logComb", "Brush__DrawingBout__raw__freeDrawing::_finalizeAndAddPath:", "(", brush.drawingBout.session.id, ",", brush.drawingBout.id,")");
132 | }
133 |
134 | var ctx = this.canvas.contextContainer;
135 | ctx.closePath();
136 | if (this.decimate) {
137 | this._points = this.decimatePoints(this._points, this.decimate);
138 | }
139 |
140 | var pathData = this.convertPointsToSVGPath(this._points);
141 | if (this._isEmptySVGPath(pathData)) {
142 | // do not create 0 width/height paths, as they are
143 | // rendered inconsistently across browsers
144 | // Firefox 4, for example, renders a dot,
145 | // whereas Chrome 10 renders nothing
146 | this.canvas.requestRenderAll();
147 | return;
148 | }
149 |
150 | var path = this.createPath(pathData);
151 | this.canvas.clearContext(ctx);
152 | // this.canvas.fire('before:path:created', { path: path, brush: brush, });
153 | this.canvas.add(path);
154 | this.canvas.requestRenderAll();
155 | path.setCoords();
156 | this._resetShadow();
157 |
158 | // fire event 'path' created
159 | // this.canvas.fire('path:created', { path: path, brush: brush, });
160 |
161 | const dict__atomic = { path: path, brush: brush, };
162 | return dict__atomic;
163 | },
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 | _addPoint: function(point) {
172 | logger.log("logFD", "ZIndexPencilBrush::_addPoint");
173 |
174 | const result = DecorationUtils.getWrappedObj(this)._addPoint(point);
175 | if(result) {
176 | this.storeLatestPoint(point);
177 | }
178 | return result;
179 | },
180 |
181 | storeLatestPoint: function(point) {
182 | logger.log("logFD", "ZIndexPencilBrush::storeLatestPoint");
183 | this.__point__latest = point;
184 | },
185 |
186 |
187 |
188 |
189 | }) {}
190 |
191 | ZIndexPencilBrush.createInstance = function(fabricCanvas) {
192 | const brush__pencil = new fabric.PencilBrush(fabricCanvas);
193 | const brush__zPencil = ZIndexPencilBrush.decorate(brush__pencil);
194 | return brush__zPencil;
195 | };
196 |
197 | fabric.ZIndexPencilBrush = ZIndexPencilBrush;
198 |
199 | })();
--------------------------------------------------------------------------------
/lib/fabric+zPixelRect.js:
--------------------------------------------------------------------------------
1 | (function(global) {
2 |
3 | 'use strict';
4 |
5 | var fabric = global.fabric || (global.fabric = { });
6 |
7 | if (fabric.ZPixelRect) {
8 | fabric.warn('fabric.ZPixelRect is already defined.');
9 | return;
10 | }
11 |
12 | /**
13 | * ZPixelRect class
14 | * @class fabric.ZPixelRect
15 | * @extends fabric.Rect
16 | * @see {@link fabric.ZPixelRect#initialize} for constructor definition
17 | */
18 | fabric.ZPixelRect = fabric.util.createClass(fabric.Rect, /** @lends fabric.ZPixelRect.prototype */ {
19 |
20 | /**
21 | * Type of an object
22 | * @type String
23 | * @default
24 | */
25 | type: 'zPixelRect',
26 |
27 | /**
28 | * zLevel of this zPixelRect
29 | * @type Number
30 | * @default
31 | */
32 | zLevel: 0,
33 |
34 | /**
35 | * ix of this zPixelRect
36 | * @type Number
37 | * @default
38 | */
39 | ix: 0,
40 |
41 | /**
42 | * iy of this zPixelRect
43 | * @type Number
44 | * @default
45 | */
46 | iy: 0,
47 |
48 | /**
49 | * iwidth of this zPixelRect
50 | * @type Number
51 | * @default
52 | */
53 | iwidth: 0,
54 |
55 | /**
56 | * iheight of this zPixelRect
57 | * @type Number
58 | * @default
59 | */
60 | iheight: 0,
61 |
62 |
63 |
64 | cacheProperties: fabric.Rect.prototype.cacheProperties.concat('zLevel', 'ix','iy', 'iwidth', 'iheight'),
65 |
66 | /**
67 | * Constructor
68 | * @param {Object} [options] Options object
69 | * @return {Object} thisArg
70 | */
71 | initialize: function(options) {
72 | this.callSuper('initialize', options);
73 | this._initStrokeWidth();
74 | },
75 |
76 | /**
77 | * Initializes strokeWidth attribute
78 | * @private
79 | */
80 | _initStrokeWidth: function() {
81 | this.strokeWidth = 0;
82 | },
83 |
84 | /**
85 | * @private
86 | * @param {String} key
87 | * @param {*} value
88 | * @return {fabric.ZPixelRect} thisArg
89 | */
90 | _set: function(key, value) {
91 | this.callSuper('_set', key, value);
92 |
93 | if (key === 'zLevel') {
94 | this.setZLevel(value);
95 | }
96 | if (key === 'ix') {
97 | this.setIx(value);
98 | }
99 | if (key === 'iy') {
100 | this.setIy(value);
101 | }
102 | if (key === 'iwidth') {
103 | this.setIwidth(value);
104 | }
105 | if (key === 'iheight') {
106 | this.setIheight(value);
107 | }
108 |
109 | return this;
110 | },
111 |
112 | /**
113 | * Returns object representation of an instance
114 | * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
115 | * @return {Object} object representation of an instance
116 | */
117 | toObject: function(propertiesToInclude) {
118 | return this.callSuper('toObject', ['zLevel','ix','iy','iwidth','iheight'].concat(propertiesToInclude));
119 | },
120 |
121 | /* _TO_SVG_START_ */
122 |
123 | /**
124 | * Returns svg representation of an instance
125 | * @return {Array} an array of strings with the specific svg representation
126 | * of the instance
127 | */
128 | _toSVG: function() {
129 | var svgString = "";
130 |
131 | throw new Error("zPixelRect._toSVG", "not implemented yet (TODO)");
132 |
133 | return svgString;
134 | },
135 | /* _TO_SVG_END_ */
136 |
137 | /**
138 | * @private
139 | * @param {CanvasRenderingContext2D} ctx context to render on
140 | */
141 | _render: function(ctx) {
142 | // ctx.fillRect(this.x, this.y, this.width, this.height);
143 | // this._renderPaintInOrder(ctx);
144 |
145 | this.callSuper('_render', ctx);
146 | },
147 |
148 | /**
149 | * Sets zLevel of an object
150 | * @return {fabric.ZPixelRect} thisArg
151 | */
152 | setZLevel: function(value) {
153 | this.zLevel = value;
154 | return true;
155 | },
156 |
157 | /**
158 | * Sets ix of an object
159 | * @return {fabric.ZPixelRect} thisArg
160 | */
161 | setIx: function(value) {
162 | this.ix = value;
163 | return true;
164 | },
165 |
166 | /**
167 | * Sets iy of an object
168 | * @return {fabric.ZPixelRect} thisArg
169 | */
170 | setIy: function(value) {
171 | this.iy = value;
172 | return true;
173 | },
174 |
175 | /**
176 | * Sets iwidth of an object
177 | * @return {fabric.ZPixelRect} thisArg
178 | */
179 | setIwidth: function(value) {
180 | this.iwidth = value;
181 | return true;
182 | },
183 |
184 | /**
185 | * Sets iheight of an object
186 | * @return {fabric.ZPixelRect} thisArg
187 | */
188 | setIheight: function(value) {
189 | this.iheight = value;
190 | return true;
191 | },
192 |
193 | /**
194 | * prevents strokeWidth from being changed
195 | * @return {fabric.ZPixelRect} thisArg
196 | */
197 | setStrokeWidth: function(value) {
198 | //ignore
199 | return false;
200 | },
201 |
202 | });
203 |
204 | /* _FROM_SVG_START_ */
205 | /**
206 | * List of attribute names to account for when parsing SVG element (used by {@link fabric.ZPixelRect.fromElement})
207 | * @static
208 | * @memberOf fabric.ZPixelRect
209 | */
210 | fabric.ZPixelRect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));
211 |
212 | /**
213 | * Returns {@link fabric.ZPixelRect} instance from an SVG element
214 | * @static
215 | * @memberOf fabric.ZPixelRect
216 | * @param {SVGElement} element Element to parse
217 | * @param {Function} [callback] Options callback invoked after parsing is finished
218 | * @param {Object} [options] Options object
219 | * @throws {Error} If value of `r` attribute is missing or invalid
220 | */
221 | fabric.ZPixelRect.fromElement = function(element, callback) {
222 | var parsedAttributes = fabric.parseAttributes(element, fabric.ZPixelRect.ATTRIBUTE_NAMES);
223 |
224 | if (!isValidRadius(parsedAttributes)) {
225 | throw new Error('value of `r` attribute is required and can not be negative');
226 | }
227 |
228 | parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;
229 | parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;
230 | callback(new fabric.ZPixelRect(parsedAttributes));
231 | };
232 | /* _FROM_SVG_END_ */
233 |
234 | /**
235 | * Returns {@link fabric.ZPixelRect} instance from an object representation
236 | * @static
237 | * @memberOf fabric.ZPixelRect
238 | * @param {Object} object Object to create an instance from
239 | * @param {function} [callback] invoked with new instance as first argument
240 | * @return {void}
241 | */
242 | fabric.ZPixelRect.fromObject = function(object, callback) {
243 | fabric.Object._fromObject('ZPixelRect', object, callback);
244 | };
245 |
246 | })(typeof exports !== 'undefined' ? exports : this);
--------------------------------------------------------------------------------
/lib/fabricjs+curve3.js:
--------------------------------------------------------------------------------
1 | fabric.Curve3 = fabric.util.createClass(fabric.Object, {
2 | type: 'curve3',
3 | initialize: function (arr_point) {
4 | logger.log("logFabric+Curve3", "initialize", arr_point);
5 |
6 | this.arr_point = arr_point;
7 |
8 | // this.canvas.renderAll();
9 | },
10 | _render: function (ctx_in) {
11 | logger.log("logFabric+Curve3", "_render", ctx_in);
12 |
13 | const arr_x_y_x_y = this.arr_point.reduce((acc,point) => {
14 | acc.push(point.x);
15 | acc.push(point.y);
16 | return acc;
17 | }, []);
18 |
19 | const rgbaColor__stroke = new fabric.Color(this.stroke).toRgba();
20 |
21 | function myRender(ctx) {
22 |
23 | //set width
24 | ctx.lineWidth = 3;
25 | // ctx.lineWidth = 2;
26 |
27 | //set color
28 | ctx.strokeStyle = rgbaColor__stroke;
29 |
30 | //bugfix: prevent canvas border being drawn
31 | ctx.beginPath();
32 | ctx.closePath();
33 |
34 | //draw curve
35 | ctx.moveTo(arr_x_y_x_y[0], arr_x_y_x_y[1]); // optionally move to first point
36 | ctx.curve(arr_x_y_x_y); // add cardinal spline to path
37 | ctx.stroke();
38 |
39 | //draw zCurve
40 | // ctx.moveTo(arr_x_y_x_y[0], arr_x_y_x_y[1]); // optionally move to first point
41 | // ctx.zCurve(arr_x_y_x_y);
42 | }
43 |
44 | //raster render //SHU: it seems that this 'raster effect' is because this context is kinda copy/pasted
45 | const ctx__top = ctx_in;
46 | myRender(ctx__top);
47 |
48 | //vector render
49 | const ctx__container = this.canvas.contextContainer;
50 | myRender(ctx__container);
51 |
52 | },
53 | });
--------------------------------------------------------------------------------
/lib/fabricjs+zCurve3.js:
--------------------------------------------------------------------------------
1 | fabric.Curve3 = fabric.util.createClass(fabric.Object, {
2 | type: 'curve3',
3 | initialize: function (arr_point) {
4 | logger.log("logFabric+Curve3", "initialize", arr_point);
5 |
6 | this.arr_point = arr_point;
7 |
8 | // this.canvas.renderAll();
9 | },
10 | _render: function (ctx_in) {
11 | logger.log("logFabric+Curve3", "_render", ctx_in);
12 |
13 | const arr_x_y_x_y = this.arr_point.reduce((acc,point) => {
14 | acc.push(point.x);
15 | acc.push(point.y);
16 | return acc;
17 | }, []);
18 |
19 | const rgbaColor__stroke = new fabric.Color(this.stroke).toRgba();
20 |
21 | function myRender(ctx) {
22 |
23 | //set width
24 | ctx.lineWidth = 3;
25 | // ctx.lineWidth = 2;
26 |
27 | //set color
28 | ctx.strokeStyle = rgbaColor__stroke;
29 |
30 | //bugfix: prevent canvas border being drawn
31 | ctx.beginPath();
32 | ctx.closePath();
33 |
34 | //draw curve
35 | // ctx.moveTo(arr_x_y_x_y[0], arr_x_y_x_y[1]); // optionally move to first point
36 | // ctx.curve(arr_x_y_x_y); // add cardinal spline to path
37 | // ctx.stroke();
38 |
39 | //draw zCurve
40 | ctx.moveTo(arr_x_y_x_y[0], arr_x_y_x_y[1]); // optionally move to first point
41 | ctx.zCurve(arr_x_y_x_y);
42 | }
43 |
44 | //raster render //SHU: it seems that this 'raster effect' is because this context is kinda copy/pasted
45 | const ctx__top = ctx_in;
46 | myRender(ctx__top);
47 |
48 | //vector render
49 | const ctx__container = this.canvas.contextContainer;
50 | myRender(ctx__container);
51 |
52 | },
53 | });
--------------------------------------------------------------------------------
/lib/gamecontroller.min.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";n.r(e);const o=(t,e="log")=>{"error"===e?console&&"function"==typeof console.error&&console.error(t):console&&"function"==typeof console.info&&console.info(t)},i=t=>o(t,"error"),s=()=>navigator.getGamepads&&"function"==typeof navigator.getGamepads||navigator.getGamepads&&"function"==typeof navigator.webkitGetGamepads||!1,a="Gamepad detected.",r="Gamepad disconnected.",c="Invalid property.",u="Invalid value. It must be a number between 0.00 and 1.00.",f="Button does not exist.",h="Unknown event name.",d="Your web browser does not support the Gamepad API.";var l={init:function(t){let e={id:t.index,buttons:t.buttons.length,axes:Math.floor(t.axes.length/2),axeValues:[],axeThreshold:[1],hapticActuator:null,vibrationMode:-1,vibration:!1,mapping:t.mapping,buttonActions:{},axesActions:{},pressed:{},set:function(t,e){if(["axeThreshold"].indexOf(t)>=0){if("axeThreshold"===t&&(!parseFloat(e)||e<0||e>1))return void i(u);this[t]=e}else i(c)},vibrate:function(t=.75,e=500){if(this.hapticActuator)switch(this.vibrationMode){case 0:return this.hapticActuator.pulse(t,e);case 1:return this.hapticActuator.playEffect("dual-rumble",{duration:e,strongMagnitude:t,weakMagnitude:t})}},triggerDirectionalAction:function(t,e,n,o,i){n&&o%2===i?(this.pressed[`${t}${e}`]||(this.pressed[`${t}${e}`]=!0,this.axesActions[e][t].before()),this.axesActions[e][t].action()):this.pressed[`${t}${e}`]&&o%2===i&&(delete this.pressed[`${t}${e}`],this.axesActions[e][t].after())},checkStatus:function(){let t={};const e=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];if(e.length){if(t=e[this.id],t.buttons)for(let e=0;e=this.axeThreshold[0],n,0),this.triggerDirectionalAction("left",i,o<=-this.axeThreshold[0],n,0),this.triggerDirectionalAction("down",i,o>=this.axeThreshold[0],n,1),this.triggerDirectionalAction("up",i,o<=-this.axeThreshold[0],n,1)}}}},associateEvent:function(t,e,n){if(t.match(/^button\d+$/)){const o=parseInt(t.match(/^button(\d+)$/)[1]);o>=0&&o=17?this.buttonActions[16][n]=e:i(f);else if(t.match(/^(up|down|left|right)(\d+)$/)){const o=t.match(/^(up|down|left|right)(\d+)$/),s=o[1],a=parseInt(o[2]);a>=0&&a{},after:()=>{},before:()=>{}};for(let t=0;t{},after:()=>{},before:()=>{}},left:{action:()=>{},after:()=>{},before:()=>{}},right:{action:()=>{},after:()=>{},before:()=>{}},up:{action:()=>{},after:()=>{},before:()=>{}}},e.axeValues[t]=[0,0];return t.hapticActuators?"function"==typeof t.hapticActuators.pulse?(e.hapticActuator=t.hapticActuators,e.vibrationMode=0,e.vibration=!0):t.hapticActuators[0]&&"function"==typeof t.hapticActuators[0].pulse&&(e.hapticActuator=t.hapticActuators[0],e.vibrationMode=0,e.vibration=!0):t.vibrationActuator&&"function"==typeof t.vibrationActuator.playEffect&&(e.hapticActuator=t.vibrationActuator,e.vibrationMode=1,e.vibration=!0),e}};const p={gamepads:{},axeThreshold:[1],isReady:s(),onConnect:function(){},onDisconnect:function(){},onBeforeCycle:function(){},onAfterCycle:function(){},getGamepads:function(){return this.gamepads},getGamepad:function(t){return this.gamepads[t]?this.gamepads[t]:null},set:function(t,e){if(["axeThreshold"].indexOf(t)>=0){if("axeThreshold"===t&&(!parseFloat(e)||e<0||e>1))return void i(u);if(this[t]=e,"axeThreshold"===t){const t=this.getGamepads(),e=Object.keys(t);for(let n=0;n0&&t(p.checkStatus)},init:function(){window.addEventListener("gamepadconnected",t=>{const e=t.gamepad||t.detail.gamepad;if(o(a),window.gamepads||(window.gamepads={}),e){if(!window.gamepads[e.index]){window.gamepads[e.index]=e;const t=l.init(e);t.set("axeThreshold",this.axeThreshold),this.gamepads[t.id]=t,this.onConnect(this.gamepads[t.id])}1===Object.keys(this.gamepads).length&&this.checkStatus()}}),window.addEventListener("gamepaddisconnected",t=>{const e=t.gamepad||t.detail.gamepad;o(r),e&&(delete window.gamepads[e.index],delete this.gamepads[e.index],this.onDisconnect(e.index))})},on:function(t,e){switch(t){case"connect":this.onConnect=e;break;case"disconnect":this.onDisconnect=e;break;case"beforeCycle":case"beforecycle":this.onBeforeCycle=e;break;case"afterCycle":case"aftercycle":this.onAfterCycle=e;break;default:i(h)}return this},off:function(t){switch(t){case"connect":this.onConnect=function(){};break;case"disconnect":this.onDisconnect=function(){};break;case"beforeCycle":case"beforecycle":this.onBeforeCycle=function(){};break;case"afterCycle":case"aftercycle":this.onAfterCycle=function(){};break;default:i(h)}return this}};p.init();var b=p;s()?window.gameControl=b:i(d)}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/action.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=6)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ActionConfiguration=e.ActionMethods=void 0;var o=a(2),n=a(3),i=a(4),r=a(5);e.ActionMethods={},e.ActionMethods.Macro=r.default.Macro,e.ActionMethods.Toggle=function(t,e){for(var a,o=[];"\\endtoggle"!==(a=t.GetArgument(e));)o.push(new n.default(a,t.stack.env,t.configuration).mml());t.Push(t.create("node","maction",o,{actiontype:"toggle"}))},e.ActionMethods.Mathtip=function(t,e){var a=t.ParseArg(e),o=t.ParseArg(e);t.Push(t.create("node","maction",[a,o],{actiontype:"tooltip"}))},new i.CommandMap("action-macros",{toggle:"Toggle",mathtip:"Mathtip",texttip:["Macro","\\mathtip{#1}{\\text{#2}}",2]},e.ActionMethods),e.ActionConfiguration=o.Configuration.create("action",{handler:{macro:["action-macros"]}})},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.TexParser.default},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.base.BaseMethods.default},function(t,e,a){"use strict";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{action:{ActionConfiguration:n}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/amscd.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=11)}([function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(7),r=a(8),o=a(9),i=a(10),c={CD:function(e,t){e.Push(t);var a=e.itemFactory.create("array"),n=e.configuration.options.amscd;return a.setProperties({minw:e.stack.env.CD_minw||n.harrowsize,minh:e.stack.env.CD_minh||n.varrowsize}),a.arraydef={columnalign:"center",columnspacing:n.colspace,rowspacing:n.rowspace,displaystyle:!0},a},arrow:function(e,t){var a=e.string.charAt(e.i);if(!a.match(/[>":"\u2192","<":"\u2190",V:"\u2193",A:"\u2191"}[a],h=e.GetUpTo(t+a,a),b=e.GetUpTo(t+a,a);if(">"===a||"<"===a){if(s=e.create("token","mo",p,M),h||(h="\\kern "+u.getProperty("minw")),h||b){var _={width:".67em",lspace:".33em"};if(s=e.create("node","munderover",[s]),h){var x=new n.default(h,e.stack.env,e.configuration).mml(),g=e.create("node","mpadded",[x],_);i.default.setAttribute(g,"voffset",".1em"),i.default.setChild(s,s.over,g)}if(b){var v=new n.default(b,e.stack.env,e.configuration).mml();i.default.setChild(s,s.under,e.create("node","mpadded",[v],_))}e.configuration.options.amscd.hideHorizontalLabels&&(s=e.create("node","mpadded",s,{depth:0,height:".67em"}))}}else{var C=e.create("token","mo",f,M);s=C,(h||b)&&(s=e.create("node","mrow"),h&&i.default.appendChildren(s,[new n.default("\\scriptstyle\\llap{"+h+"}",e.stack.env,e.configuration).mml()]),C.texClass=o.TEXCLASS.ORD,i.default.appendChildren(s,[C]),b&&i.default.appendChildren(s,[new n.default("\\scriptstyle\\rlap{"+b+"}",e.stack.env,e.configuration).mml()]))}}s&&e.Push(s),c.cell(e,t)},cell:function(e,t){var a=e.stack.Top();(a.table||[]).length%2==0&&0===(a.row||[]).length&&e.Push(e.create("node","mpadded",[],{height:"8.5pt",depth:"2pt"})),e.Push(e.itemFactory.create("cell").setProperties({isEntry:!0,name:t}))},minCDarrowwidth:function(e,t){e.stack.env.CD_minw=e.GetDimen(t)},minCDarrowheight:function(e,t){e.stack.env.CD_minh=e.GetDimen(t)}};t.default=c},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AmsCdConfiguration=void 0;var n=a(3);a(4),t.AmsCdConfiguration=n.Configuration.create("amscd",{handler:{character:["amscd_special"],macro:["amscd_macros"],environment:["amscd_environment"]},options:{amscd:{colspace:"5pt",rowspace:"5pt",harrowsize:"2.75em",varrowsize:"1.75em",hideHorizontalLabels:!1}}})},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(5),r=a(6),o=a(1);new n.EnvironmentMap("amscd_environment",r.default.environment,{CD:"CD"},o.default),new n.CommandMap("amscd_macros",{minCDarrowwidth:"minCDarrowwidth",minCDarrowheight:"minCDarrowheight"},o.default),new n.MacroMap("amscd_special",{"@":"arrow"},o.default)},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.ParseMethods.default},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.TexParser.default},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Other=MathJax._.input.tex.base.BaseConfiguration.Other,t.BaseTags=MathJax._.input.tex.base.BaseConfiguration.BaseTags,t.BaseConfiguration=MathJax._.input.tex.base.BaseConfiguration.BaseConfiguration},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,t.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,t.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,t.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,t.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,t.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,t.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,t.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,t.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,t.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.NodeUtil.default},function(e,t,a){"use strict";a.r(t);var n=a(0),r=a(2),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{amscd:{AmsCdConfiguration:r,AmsCdMethods:o}}}}}),function(e,t,a){var r,o,i,c=MathJax.config.tex;if(c&&c.packages){var l=c.packages,s=l.indexOf(e);s>=0&&(l[s]=t),a&&c[e]&&(Object(n.combineConfig)(c,(r={},o=t,i=c[e],o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i,r)),delete c[e])}}("amsCd","amscd",!0)}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/autoload.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function o(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(a,r,function(t){return e[t]}.bind(null,r));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=8)}([function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,o){"use strict";var a=this&&this.__read||function(e,t){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var a,r,n=o.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(a=n.next()).done;)i.push(a.value)}catch(e){r={error:e}}finally{try{a&&!a.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}return i},r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,o=t&&e[t],a=0;if(o)return o.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&a>=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.AutoloadConfiguration=void 0;var n=o(2),i=o(3),l=o(4),u=o(5),c=o(6),s=o(7);function p(e,t,o,n){var i,l,s,p;if(c.Package.packages.has(e.options.require.prefix+o)){var x=e.options.autoload[o],M=a(2===x.length&&Array.isArray(x[0])?x:[x,[]],2),b=M[0],h=M[1];try{for(var y=r(b),m=y.next();!m.done;m=y.next()){var _=m.value;f.remove(_)}}catch(e){i={error:e}}finally{try{m&&!m.done&&(l=y.return)&&l.call(y)}finally{if(i)throw i.error}}try{for(var g=r(h),v=g.next();!v.done;v=g.next()){var O=v.value;d.remove(O)}}catch(e){s={error:e}}finally{try{v&&!v.done&&(p=g.return)&&p.call(g)}finally{if(s)throw s.error}}e.string=(n?t:"\\begin{"+t.slice(1)+"}")+e.string.slice(e.i),e.i=0}u.RequireLoad(e,o)}var f=new i.CommandMap("autoload-macros",{},{}),d=new i.CommandMap("autoload-environments",{},{});t.AutoloadConfiguration=n.Configuration.create("autoload",{handler:{macro:["autoload-macros"],environment:["autoload-environments"]},options:{autoload:s.expandable({action:["toggle","mathtip","texttip"],amscd:[[],["CD"]],bbox:["bbox"],boldsymbol:["boldsymbol"],braket:["bra","ket","braket","set","Bra","Ket","Braket","Set","ketbra","Ketbra"],bussproofs:[[],["prooftree"]],cancel:["cancel","bcancel","xcancel","cancelto"],color:["color","definecolor","textcolor","colorbox","fcolorbox"],enclose:["enclose"],extpfeil:["xtwoheadrightarrow","xtwoheadleftarrow","xmapsto","xlongequal","xtofrom","Newextarrow"],html:["href","class","style","cssId"],mhchem:["ce","pu"],newcommand:["newcommand","renewcommand","newenvironment","renewenvironment","def","let"],unicode:["unicode"],verb:["verb"]})},config:function(e,t){var o,n,i,c,s,x,M=t.parseOptions,b=M.handlers.get("macro"),h=M.handlers.get("environment"),y=M.options.autoload;M.packageData.set("autoload",{Autoload:p});try{for(var m=r(Object.keys(y)),_=m.next();!_.done;_=m.next()){var g=_.value,v=y[g],O=a(2===v.length&&Array.isArray(v[0])?v:[v,[]],2),J=O[0],C=O[1];try{for(var P=(i=void 0,r(J)),S=P.next();!S.done;S=P.next()){var w=S.value;b.lookup(w)&&"color"!==w||f.add(w,new l.Macro(w,p,[g,!0]))}}catch(e){i={error:e}}finally{try{S&&!S.done&&(c=P.return)&&c.call(P)}finally{if(i)throw i.error}}try{for(var k=(s=void 0,r(C)),q=k.next();!q.done;q=k.next()){var j=q.value;h.lookup(j)||d.add(j,new l.Macro(j,p,[g,!1]))}}catch(e){s={error:e}}finally{try{q&&!q.done&&(x=k.return)&&x.call(k)}finally{if(s)throw s.error}}}}catch(e){o={error:e}}finally{try{_&&!_.done&&(n=m.return)&&n.call(m)}finally{if(o)throw o.error}}M.packageData.get("require")||u.RequireConfiguration.config(e,t)},init:function(e){e.options.require||s.defaultOptions(e.options,u.RequireConfiguration.options)},priority:10})},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Symbol=MathJax._.input.tex.Symbol.Symbol,t.Macro=MathJax._.input.tex.Symbol.Macro},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequireLoad=MathJax._.input.tex.require.RequireConfiguration.RequireLoad,t.RequireMethods=MathJax._.input.tex.require.RequireConfiguration.RequireMethods,t.options=MathJax._.input.tex.require.RequireConfiguration.options,t.RequireConfiguration=MathJax._.input.tex.require.RequireConfiguration.RequireConfiguration},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PackageError=MathJax._.components.package.PackageError,t.Package=MathJax._.components.package.Package},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.APPEND=MathJax._.util.Options.APPEND,t.REMOVE=MathJax._.util.Options.REMOVE,t.Expandable=MathJax._.util.Options.Expandable,t.expandable=MathJax._.util.Options.expandable,t.makeArray=MathJax._.util.Options.makeArray,t.keys=MathJax._.util.Options.keys,t.copy=MathJax._.util.Options.copy,t.insert=MathJax._.util.Options.insert,t.defaultOptions=MathJax._.util.Options.defaultOptions,t.userOptions=MathJax._.util.Options.userOptions,t.selectOptions=MathJax._.util.Options.selectOptions,t.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,t.separateOptions=MathJax._.util.Options.separateOptions},function(e,t,o){"use strict";o.r(t);var a=o(0),r=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{autoload:{AutoloadConfiguration:r}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/bbox.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=5)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BboxConfiguration=e.BboxMethods=void 0;var o=a(2),n=a(3),i=a(4);e.BboxMethods={},e.BboxMethods.BBox=function(t,e){for(var a,o,n,l=t.GetBrackets(e,""),c=t.ParseArg(e),p=l.split(/,/),f=0,s=p.length;f=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.BoldsymbolConfiguration=e.rewriteBoldTokens=e.createBoldToken=e.BoldsymbolMethods=void 0;var n=o(2),r=o(3),i=o(4),l=o(5),u=o(6),s={};function c(t,e,o,a){var n=u.NodeFactory.createToken(t,e,o,a);return"mtext"!==e&&t.configuration.parser.stack.env.boldsymbol&&(r.default.setProperty(n,"fixBold",!0),t.configuration.addNode("fixBold",n)),n}function d(t){var e,o;try{for(var n=a(t.data.getList("fixBold")),l=n.next();!l.done;l=n.next()){var u=l.value;if(r.default.getProperty(u,"fixBold")){var c=r.default.getAttribute(u,"mathvariant");null==c?r.default.setAttribute(u,"mathvariant",i.TexConstant.Variant.BOLD):r.default.setAttribute(u,"mathvariant",s[c]||c),r.default.removeProperties(u,"fixBold")}}}catch(t){e={error:t}}finally{try{l&&!l.done&&(o=n.return)&&o.call(n)}finally{if(e)throw e.error}}}s[i.TexConstant.Variant.NORMAL]=i.TexConstant.Variant.BOLD,s[i.TexConstant.Variant.ITALIC]=i.TexConstant.Variant.BOLDITALIC,s[i.TexConstant.Variant.FRAKTUR]=i.TexConstant.Variant.BOLDFRAKTUR,s[i.TexConstant.Variant.SCRIPT]=i.TexConstant.Variant.BOLDSCRIPT,s[i.TexConstant.Variant.SANSSERIF]=i.TexConstant.Variant.BOLDSANSSERIF,s["-tex-calligraphic"]="-tex-bold-calligraphic",s["-tex-oldstyle"]="-tex-bold-oldstyle",e.BoldsymbolMethods={},e.BoldsymbolMethods.Boldsymbol=function(t,e){var o=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var a=t.ParseArg(e);t.stack.env.boldsymbol=o,t.Push(a)},new l.CommandMap("boldsymbol",{boldsymbol:"Boldsymbol"},e.BoldsymbolMethods),e.createBoldToken=c,e.rewriteBoldTokens=d,e.BoldsymbolConfiguration=n.Configuration.create("boldsymbol",{handler:{macro:["boldsymbol"]},nodes:{token:c},postprocessors:[d]})},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},function(t,e,o){"use strict";o.r(e);var a=o(0),n=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{boldsymbol:{BoldsymbolConfiguration:n}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/braket.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function r(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,a){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(a,o,function(t){return e[t]}.bind(null,o));return a},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=12)}([function(e,t,r){"use strict";var a,o=this&&this.__extends||(a=function(e,t){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.BraketItem=void 0;var n=r(6),i=r(2),c=r(7),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),Object.defineProperty(t.prototype,"kind",{get:function(){return"braket"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isOpen",{get:function(){return!0},enumerable:!1,configurable:!0}),t.prototype.checkItem=function(t){return t.isKind("close")?[[this.factory.create("mml",this.toMml())],!0]:t.isKind("mml")?(this.Push(t.toMml()),this.getProperty("single")?[[this.toMml()],!0]:n.BaseItem.fail):e.prototype.checkItem.call(this,t)},t.prototype.toMml=function(){var t=e.prototype.toMml.call(this),r=this.getProperty("open"),a=this.getProperty("close");if(this.getProperty("stretchy"))return c.default.fenced(this.factory.configuration,r,t,a);var o={fence:!0,stretchy:!1,symmetric:!0,texClass:i.TEXCLASS.OPEN},n=this.create("token","mo",o,r);o.texClass=i.TEXCLASS.CLOSE;var u=this.create("token","mo",o,a);return this.create("node","mrow",[n,t,u],{open:r,close:a,texClass:i.TEXCLASS.INNER})},t}(n.BaseItem);t.BraketItem=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=r(10),o=r(2),n=r(11),i={};i.Macro=a.default.Macro,i.Braket=function(e,t,r,a,o,i){var c=e.GetNext();if(""===c)throw new n.default("MissingArgFor","Missing argument for %1",e.currentCS);var u=!0;"{"===c&&(e.i++,u=!1),e.Push(e.itemFactory.create("braket").setProperties({barmax:i,barcount:0,open:r,close:a,stretchy:o,single:u}))},i.Bar=function(e,t){var r="|"===t?"|":"\u2225",a=e.stack.Top();if("braket"!==a.kind||a.getProperty("barcount")>=a.getProperty("barmax")){var n=e.create("token","mo",{texClass:o.TEXCLASS.ORD,stretchy:!1},r);e.Push(n)}else{if("|"===r&&"|"===e.GetNext()&&(e.i++,r="\u2225"),a.getProperty("stretchy")){var i=e.create("node","TeXAtom",[],{texClass:o.TEXCLASS.CLOSE});e.Push(i),a.setProperty("barcount",a.getProperty("barcount")+1),i=e.create("token","mo",{stretchy:!0,braketbar:!0},r),e.Push(i),i=e.create("node","TeXAtom",[],{texClass:o.TEXCLASS.OPEN}),e.Push(i)}else{var c=e.create("token","mo",{stretchy:!1,braketbar:!0},r);e.Push(c)}}},t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TEXCLASS=MathJax._.core.MmlTree.MmlNode.TEXCLASS,t.TEXCLASSNAMES=MathJax._.core.MmlTree.MmlNode.TEXCLASSNAMES,t.indentAttributes=MathJax._.core.MmlTree.MmlNode.indentAttributes,t.AbstractMmlNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlNode,t.AbstractMmlTokenNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlTokenNode,t.AbstractMmlLayoutNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlLayoutNode,t.AbstractMmlBaseNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlBaseNode,t.AbstractMmlEmptyNode=MathJax._.core.MmlTree.MmlNode.AbstractMmlEmptyNode,t.TextNode=MathJax._.core.MmlTree.MmlNode.TextNode,t.XMLNode=MathJax._.core.MmlTree.MmlNode.XMLNode},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,r){"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.BraketConfiguration=void 0;var o=r(5),n=r(0);r(8),t.BraketConfiguration=o.Configuration.create("braket",{handler:{character:["Braket-characters"],macro:["Braket-macros"]},items:(a={},a[n.BraketItem.prototype.kind]=n.BraketItem,a)})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MmlStack=MathJax._.input.tex.StackItem.MmlStack,t.BaseItem=MathJax._.input.tex.StackItem.BaseItem},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=r(9),o=r(1);new a.CommandMap("Braket-macros",{bra:["Macro","{\\langle {#1} \\vert}",1],ket:["Macro","{\\vert {#1} \\rangle}",1],braket:["Braket","\u27e8","\u27e9",!1,1/0],set:["Braket","{","}",!1,1],Bra:["Macro","{\\left\\langle {#1} \\right\\vert}",1],Ket:["Macro","{\\left\\vert {#1} \\right\\rangle}",1],Braket:["Braket","\u27e8","\u27e9",!0,1/0],Set:["Braket","{","}",!0,1],ketbra:["Macro","{\\vert {#1} \\rangle\\langle {#2} \\vert}",2],Ketbra:["Macro","{\\left\\vert {#1} \\right\\rangle\\left\\langle {#2} \\right\\vert}",2],"|":"Bar"},o.default),new a.MacroMap("Braket-characters",{"|":"Bar"},o.default)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.base.BaseMethods.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.TexError.default},function(e,t,r){"use strict";r.r(t);var a=r(3),o=r(4),n=r(0),i=r(1);Object(a.combineWithMathJax)({_:{input:{tex:{braket:{BraketConfiguration:o,BraketItems:n,BraketMethods:i}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/cancel.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancelConfiguration=t.CancelMethods=void 0;var a=n(2),o=n(3),i=n(4),r=n(5),c=n(6);t.CancelMethods={},t.CancelMethods.Cancel=function(e,t,n){var a=e.GetBrackets(t,""),o=e.ParseArg(t),i=r.default.keyvalOptions(a,c.ENCLOSE_OPTIONS);i.notation=n,e.Push(e.create("node","menclose",[o],i))},t.CancelMethods.CancelTo=function(e,t){var n=e.GetBrackets(t,""),a=e.ParseArg(t),i=e.ParseArg(t),u=r.default.keyvalOptions(n,c.ENCLOSE_OPTIONS);u.notation=[o.TexConstant.Notation.UPDIAGONALSTRIKE,o.TexConstant.Notation.UPDIAGONALARROW,o.TexConstant.Notation.NORTHEASTARROW].join(" "),a=e.create("node","mpadded",[a],{depth:"-.1em",height:"+.1em",voffset:".1em"}),e.Push(e.create("node","msup",[e.create("node","menclose",[i],u),a]))},new i.CommandMap("cancel",{cancel:["Cancel",o.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:["Cancel",o.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:["Cancel",o.TexConstant.Notation.UPDIAGONALSTRIKE+" "+o.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:"CancelTo"},t.CancelMethods),t.CancelConfiguration=a.Configuration.create("cancel",{handler:{macro:["cancel"]}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ENCLOSE_OPTIONS=MathJax._.input.tex.enclose.EncloseConfiguration.ENCLOSE_OPTIONS,t.EncloseMethods=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseMethods,t.EncloseConfiguration=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseConfiguration},function(e,t,n){"use strict";n.r(t);var a=n(0),o=n(1);Object(a.combineWithMathJax)({_:{input:{tex:{cancel:{CancelConfiguration:o}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/colorv2.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=e,o.d=function(t,e,a){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(a,n,function(e){return t[e]}.bind(null,n));return a},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=4)}([function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorConfiguration=e.ColorV2Methods=void 0;var a=o(2),n=o(3);e.ColorV2Methods={Color:function(t,e){var o=t.GetArgument(e),a=t.stack.env.color;t.stack.env.color=o;var n=t.ParseArg(e);a?t.stack.env.color=a:delete t.stack.env.color;var r=t.create("node","mstyle",[n],{mathcolor:o});t.Push(r)}},new a.CommandMap("colorv2",{color:"Color"},e.ColorV2Methods),e.ColorConfiguration=n.Configuration.create("colorv2",{handler:{macro:["colorv2"]}})},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,o){"use strict";o.r(e);var a=o(0),n=o(1);Object(a.combineWithMathJax)({_:{input:{tex:{colorv2:{ColorV2Configuration:n}}}}}),function(t,e,o){var n,r,i,c=MathJax.config.tex;if(c&&c.packages){var l=c.packages,u=l.indexOf(t);u>=0&&(l[u]=e),o&&c[t]&&(Object(a.combineConfig)(c,(n={},r=e,i=c[t],r in n?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,n)),delete c[t])}}("colorV2","colorv2",!1)}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/configmacros.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=7)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){"use strict";var n=this&&this.__values||function(t){var e="function"==typeof Symbol&&Symbol.iterator,a=e&&t[e],n=0;if(a)return a.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigMacrosConfiguration=void 0;var o=a(2),i=a(3),r=a(4),u=a(5),c=a(6);e.ConfigMacrosConfiguration=o.Configuration.create("configmacros",{init:function(t){new r.CommandMap("configmacros-map",{},{}),t.append(o.Configuration.local({handler:{macro:["configmacros-map"]},priority:3}))},config:function(t,e){var a,o,i=e.parseOptions.handlers.retrieve("configmacros-map"),r=e.parseOptions.options.macros;try{for(var l=n(Object.keys(r)),p=l.next();!p.done;p=l.next()){var s=p.value,f="string"==typeof r[s]?[r[s]]:r[s],M=Array.isArray(f[2])?new u.Macro(s,c.default.MacroWithTemplate,f.slice(0,2).concat(f[2])):new u.Macro(s,c.default.Macro,f);i.add(s,M)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}},options:{macros:i.expandable({})}})},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.APPEND=MathJax._.util.Options.APPEND,e.REMOVE=MathJax._.util.Options.REMOVE,e.Expandable=MathJax._.util.Options.Expandable,e.expandable=MathJax._.util.Options.expandable,e.makeArray=MathJax._.util.Options.makeArray,e.keys=MathJax._.util.Options.keys,e.copy=MathJax._.util.Options.copy,e.insert=MathJax._.util.Options.insert,e.defaultOptions=MathJax._.util.Options.defaultOptions,e.userOptions=MathJax._.util.Options.userOptions,e.selectOptions=MathJax._.util.Options.selectOptions,e.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,e.separateOptions=MathJax._.util.Options.separateOptions},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Symbol=MathJax._.input.tex.Symbol.Symbol,e.Macro=MathJax._.input.tex.Symbol.Macro},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandMethods.default},function(t,e,a){"use strict";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{configmacros:{ConfigMacrosConfiguration:o}}}}}),function(t,e,a){var o,i,r,u=MathJax.config.tex;if(u&&u.packages){var c=u.packages,l=c.indexOf(t);l>=0&&(c[l]=e),a&&u[t]&&(Object(n.combineConfig)(u,(o={},i=e,r=u[t],i in o?Object.defineProperty(o,i,{value:r,enumerable:!0,configurable:!0,writable:!0}):o[i]=r,o)),delete u[t])}}("configMacros","configmacros",!1)}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/enclose.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function a(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=5)}([function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncloseConfiguration=t.EncloseMethods=t.ENCLOSE_OPTIONS=void 0;var n=a(2),o=a(3),r=a(4);t.ENCLOSE_OPTIONS={"data-arrowhead":1,color:1,mathcolor:1,background:1,mathbackground:1,"data-padding":1,"data-thickness":1},t.EncloseMethods={},t.EncloseMethods.Enclose=function(e,a){var n=e.GetArgument(a).replace(/,/g," "),o=e.GetBrackets(a,""),i=e.ParseArg(a),u=r.default.keyvalOptions(o,t.ENCLOSE_OPTIONS);u.notation=n,e.Push(e.create("node","menclose",[i],u))},new o.CommandMap("enclose",{enclose:"Enclose"},t.EncloseMethods),t.EncloseConfiguration=n.Configuration.create("enclose",{handler:{macro:["enclose"]}})},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},function(e,t,a){"use strict";a.r(t);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{enclose:{EncloseConfiguration:o}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/extpfeil.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=t,a.c=e,a.d=function(t,e,o){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(o,n,function(e){return t[e]}.bind(null,n));return o},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=8)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var o=a(2),n=a(3),r=a(4),i=a(5),u=a(6),l=a(7);e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=r.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,a){var o=t.GetArgument(a),n=t.GetArgument(a),r=t.GetArgument(a);if(!o.match(/^\\([a-z]+|.)$/i))throw new l.default("NewextarrowArg1","First argument to %1 must be a control sequence name",a);if(!n.match(/^(\d+),(\d+)$/))throw new l.default("NewextarrowArg2","Second argument to %1 must be two integers separated by a comma",a);if(!r.match(/^(\d+|0x[0-9A-F]+)$/i))throw new l.default("NewextarrowArg3","Third argument to %1 must be a unicode character number",a);o=o.substr(1);var u=n.split(",");i.default.addMacro(t,o,e.ExtpfeilMethods.xArrow,[parseInt(r),parseInt(u[0]),parseInt(u[1])])},new n.CommandMap("extpfeil",{xtwoheadrightarrow:["xArrow",8608,12,16],xtwoheadleftarrow:["xArrow",8606,17,13],xmapsto:["xArrow",8614,6,7],xlongequal:["xArrow",61,7,7],xtofrom:["xArrow",8644,12,12],Newextarrow:"NewExtArrow"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=o.Configuration.create("extpfeil",{handler:{macro:["extpfeil"]},init:function(t){u.NewcommandConfiguration.init(t)}})},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AmsMethods=MathJax._.input.tex.ams.AmsMethods.AmsMethods,e.NEW_OPS=MathJax._.input.tex.ams.AmsMethods.NEW_OPS},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandUtil.default},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NewcommandConfiguration=MathJax._.input.tex.newcommand.NewcommandConfiguration.NewcommandConfiguration},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){"use strict";a.r(e);var o=a(0),n=a(1);Object(o.combineWithMathJax)({_:{input:{tex:{extpfeil:{ExtpfeilConfiguration:n}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/html.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)a.d(n,r,function(e){return t[e]}.bind(null,r));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=6)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=a(5),r={Href:function(t,e){var a=t.GetArgument(e),r=o(t,e);n.default.setAttribute(r,"href",a),t.Push(r)},Class:function(t,e){var a=t.GetArgument(e),r=o(t,e),u=n.default.getAttribute(r,"class");u&&(a=u+" "+a),n.default.setAttribute(r,"class",a),t.Push(r)},Style:function(t,e){var a=t.GetArgument(e),r=o(t,e),u=n.default.getAttribute(r,"style");u&&(";"!==a.charAt(a.length-1)&&(a+=";"),a=u+" "+a),n.default.setAttribute(r,"style",a),t.Push(r)},Id:function(t,e){var a=t.GetArgument(e),r=o(t,e);n.default.setAttribute(r,"id",a),t.Push(r)}},o=function(t,e){var a=t.ParseArg(e);if(!n.default.isInferred(a))return a;var r=n.default.getChildren(a);if(1===r.length)return r[0];var o=t.create("node","mrow");return n.default.copyChildren(a,o),n.default.copyAttributes(a,o),o};e.default=r},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HtmlConfiguration=void 0;var n=a(3),r=a(4),o=a(0);new r.CommandMap("html_macros",{href:"Href",class:"Class",style:"Style",cssId:"Id"},o.default),e.HtmlConfiguration=n.Configuration.create("html",{handler:{macro:["html_macros"]}})},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){"use strict";a.r(e);var n=a(1),r=a(2),o=a(0);Object(n.combineWithMathJax)({_:{input:{tex:{html:{HtmlConfiguration:r,HtmlMethods:o}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/noerrors.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoErrorsConfiguration=void 0;var o=n(2);t.NoErrorsConfiguration=o.Configuration.create("noerrors",{nodes:{error:function(e,t,n,o){var r=e.create("token","mtext",{},o.replace(/\n/g," "));return e.create("node","merror",[r],{"data-mjx-error":t,title:t})}}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,t,n){"use strict";n.r(t);var o=n(0),r=n(1);Object(o.combineWithMathJax)({_:{input:{tex:{noerrors:{NoErrorsConfiguration:r}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/noundefined.js:
--------------------------------------------------------------------------------
1 | !function(e){var n={};function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:o})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)t.d(o,r,function(n){return e[n]}.bind(null,r));return o},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=3)}([function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.isObject=MathJax._.components.global.isObject,n.combineConfig=MathJax._.components.global.combineConfig,n.combineDefaults=MathJax._.components.global.combineDefaults,n.combineWithMathJax=MathJax._.components.global.combineWithMathJax,n.MathJax=MathJax._.components.global.MathJax},function(e,n,t){"use strict";var o=this&&this.__values||function(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],o=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(n,"__esModule",{value:!0}),n.NoUndefinedConfiguration=void 0;var r=t(2);n.NoUndefinedConfiguration=r.Configuration.create("noundefined",{fallback:{macro:function(e,n){var t,r,i=e.create("text","\\"+n),a=e.options.noundefined||{},u={};try{for(var f=o(["color","background","size"]),c=f.next();!c.done;c=f.next()){var l=c.value;a[l]&&(u["math"+l]=a[l])}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=f.return)&&r.call(f)}finally{if(t)throw t.error}}e.Push(e.create("node","mtext",[],u,i))}},options:{noundefined:{color:"red",background:"",size:""}},priority:3})},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Configuration=MathJax._.input.tex.Configuration.Configuration,n.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,n.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(e,n,t){"use strict";t.r(n);var o=t(0),r=t(1);Object(o.combineWithMathJax)({_:{input:{tex:{noundefined:{NoUndefinedConfiguration:r}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/require.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function a(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)a.d(r,o,function(t){return e[t]}.bind(null,o));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=9)}([function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=MathJax._.components.global.isObject,t.combineConfig=MathJax._.components.global.combineConfig,t.combineDefaults=MathJax._.components.global.combineDefaults,t.combineWithMathJax=MathJax._.components.global.combineWithMathJax,t.MathJax=MathJax._.components.global.MathJax},function(e,t,a){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,a=t&&e[t],r=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__read||function(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var r,o,n=a.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=n.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(a=n.return)&&a.call(n)}finally{if(o)throw o.error}}return i},n=this&&this.__spread||function(){for(var e=[],t=0;t=0&&(s[f]=n),o&&u[t]&&(Object(e.combineConfig)(u,(a={},r=n,i=u[t],r in a?Object.defineProperty(a,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):a[r]=i,a)),delete u[t])}}("tagFormat","tagformat",!0)}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/unicode.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=8)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var n=a(2),o=a(3),i=a(4),r=a(5),u=a(6),c=a(7);e.UnicodeMethods={};var l={};e.UnicodeMethods.Unicode=function(t,e){var a=t.GetBrackets(e),n=null,i=null;a&&(a.replace(/ /g,"").match(/^(\d+(\.\d*)?|\.\d+),(\d+(\.\d*)?|\.\d+)$/)?(n=a.replace(/ /g,"").split(/,/),i=t.GetBrackets(e)):i=a);var d=r.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,"x");if(!d.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new o.default("BadUnicode","Argument to \\unicode must be a number");var p=parseInt(d.match(/^x/)?"0"+d:d);l[p]?i||(i=l[p][2]):l[p]=[800,200,i,p],n&&(l[p][0]=Math.floor(1e3*parseFloat(n[0])),l[p][1]=Math.floor(1e3*parseFloat(n[1])));var s=t.stack.env.font,f={};i?(l[p][2]=f.fontfamily=i.replace(/'/g,"'"),s&&(s.match(/bold/)&&(f.fontweight="bold"),s.match(/italic|-mathit/)&&(f.fontstyle="italic"))):s&&(f.mathvariant=s);var M=t.create("token","mtext",f,c.numeric(d));u.default.setProperty(M,"unicode",!0),t.Push(M)},new i.CommandMap("unicode",{unicode:"Unicode"},e.UnicodeMethods),e.UnicodeConfiguration=n.Configuration.create("unicode",{handler:{macro:["unicode"]}})},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.TexError.default},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},function(t,e,a){"use strict";a.r(e);var n=a(0),o=a(1);Object(n.combineWithMathJax)({_:{input:{tex:{unicode:{UnicodeConfiguration:o}}}}})}]);
--------------------------------------------------------------------------------
/lib/input/tex/extensions/verb.js:
--------------------------------------------------------------------------------
1 | !function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(a,r,function(e){return t[e]}.bind(null,r));return a},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=6)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isObject=MathJax._.components.global.isObject,e.combineConfig=MathJax._.components.global.combineConfig,e.combineDefaults=MathJax._.components.global.combineDefaults,e.combineWithMathJax=MathJax._.components.global.combineWithMathJax,e.MathJax=MathJax._.components.global.MathJax},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var a=n(2),r=n(3),o=n(4),i=n(5);e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var n=t.GetNext(),a=++t.i;if(""===n)throw new i.default("MissingArgFor","Missing argument for %1",e);for(;t.iparseInt(a[1],10)):F=!1);return F}function M(a){null===H&&(H=!!a.document.fonts);return H}
8 | function N(a,c){var b=a.style,g=a.weight;if(null===G){var e=document.createElement("div");try{e.style.font="condensed 100px sans-serif"}catch(q){}G=""!==e.style.font}return[b,g,G?a.stretch:"","100px",c].join(" ")}
9 | D.prototype.load=function(a,c){var b=this,g=a||"BESbswy",e=0,q=c||3E3,J=(new Date).getTime();return new Promise(function(K,L){if(M(b.context)&&!I(b.context)){var O=new Promise(function(r,t){function h(){(new Date).getTime()-J>=q?t(Error(""+q+"ms timeout exceeded")):b.context.document.fonts.load(N(b,'"'+b.family+'"'),g).then(function(n){1<=n.length?r():setTimeout(h,25)},t)}h()}),P=new Promise(function(r,t){e=setTimeout(function(){t(Error(""+q+"ms timeout exceeded"))},q)});Promise.race([P,O]).then(function(){clearTimeout(e);
10 | K(b)},L)}else u(function(){function r(){var d;if(d=-1!=k&&-1!=l||-1!=k&&-1!=m||-1!=l&&-1!=m)(d=k!=l&&k!=m&&l!=m)||(null===E&&(d=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),E=!!d&&(536>parseInt(d[1],10)||536===parseInt(d[1],10)&&11>=parseInt(d[2],10))),d=E&&(k==y&&l==y&&m==y||k==z&&l==z&&m==z||k==A&&l==A&&m==A)),d=!d;d&&(null!==f.parentNode&&f.parentNode.removeChild(f),clearTimeout(e),K(b))}function t(){if((new Date).getTime()-J>=q)null!==f.parentNode&&f.parentNode.removeChild(f),
11 | L(Error(""+q+"ms timeout exceeded"));else{var d=b.context.document.hidden;if(!0===d||void 0===d)k=h.g.offsetWidth,l=n.g.offsetWidth,m=v.g.offsetWidth,r();e=setTimeout(t,50)}}var h=new w(g),n=new w(g),v=new w(g),k=-1,l=-1,m=-1,y=-1,z=-1,A=-1,f=document.createElement("div");f.dir="ltr";x(h,N(b,"sans-serif"));x(n,N(b,"serif"));x(v,N(b,"monospace"));f.appendChild(h.g);f.appendChild(n.g);f.appendChild(v.g);b.context.document.body.appendChild(f);y=h.g.offsetWidth;z=n.g.offsetWidth;A=v.g.offsetWidth;t();
12 | C(h,function(d){k=d;r()});x(h,N(b,'"'+b.family+'",sans-serif'));C(n,function(d){l=d;r()});x(n,N(b,'"'+b.family+'",serif'));C(v,function(d){m=d;r()});x(v,N(b,'"'+b.family+'",monospace'))})})};"object"===typeof module?module.exports=D:(window.FontFaceObserver=D,window.FontFaceObserver.prototype.load=D.prototype.load);}());
13 |
--------------------------------------------------------------------------------
/start_peerjs.bat:
--------------------------------------------------------------------------------
1 | start /b peerjs --port 9000 --key peerjs --path /myapp
2 | start chrome http://127.0.0.1:9000/myapp
--------------------------------------------------------------------------------