The client-side component of the SwiftCalcs application.
This software is copyright Brentan Alexander Consulting LLC. All rights reserved.
This software contains other software components licensed under GPL3 and other open source licenses. In order to abide by those licenses, the SwiftCalcs client component is licensed under Mozilla Public License, v.2.0. You can obtain a copy of this license at mozilla.org/MPL/2.0/.
Thanks to the support of developers whose open source software is used in this application, including:
-
Giac: An open-source computer algebra system utilized by SwiftCalcs client. The ‘emgiac’ project, which is giac compiled to JS with emscripten, is utilized. www-fourier.ujf-grenoble.fr/~parisse/giac.html
-
Mathquill: An open-source pretty-print generator and input system. A heavily customized version of this library is utilized by SwiftCalcs Client (also available openly as a github fork of the main project). github.com/mathquill/mathquill
-
jQuery: Goes without saying. jquery.com/
-
P.js: Classes for javascript that don’t suck: github.com/jneen/pjs
-
Font Awesome by Dave Gandy - fontawesome.io
-
Rangy: The cross-browser range replacement. github.com/timdown/rangy
-
Diff Match and Patch, Copyright 2006 Google Inc. - code.google.com/p/google-diff-match-patch/
-
Papa Parse - github.com/mholt/PapaParse
swift_calcs_client contains three different libraries that are used by the swift calcs application. They are all built using the ‘make’ command. All three libraries are composed of multiple javscript files that, upon build, are concatenated together into a single file. The intro.js and outro.js files in each library provide the beginning/end of the built library.
SRC_WORKER
This folder contains the library for the webworker that launches and runs the math engine emgiac. This is done in a worker so that active calculations do not freeze the UI. Its primary purpose is to launch emgiac, receive commands from the main process, perform the calculation in emgiac, and return results to the main process.
SRC_EMBED
This folder contains the library that is loaded by third-party websites that embed swift calcs content
SRC
This folder contains the library for the swift calcs UI, and is organized in to a few different folders based on the function of the underlying scripts. They are:
-
wrapper: contains intro/outro files
-
worksheet: The base object for a swift calcs worksheet. A worksheet contains multiple elements, organized from top of the worksheet to the bottom. Each element can have children of its own. Each line in a worksheet is its own element. Worksheets track the first/last elements in .ends and .ends. Elements track children in the same manner, and also track neighbors with [L] and [R] (L and R are defined as -1 and 1, respectively).
-
element.js: The base class for an element
-
elements: All the various elements that can exist in a swift calcs worksheet, from plots to solvers to text boxes. The most common elements are the math and text elements.
-
ui_support: Various functions that provide UI features, like popups and dialogs.
-
utilies: Functions that provide various utility functions for the rest of the library