1 | # smartdown
|
2 |
|
3 | > smartdown - A Javascript library for translating, rendering, and interacting with Smartdown documents. (Smartdown is currently in a pre-open-source stage where only the compiled assets are being published via `npm`. The build instructions later in this document will not work without the complete source).
|
4 |
|
5 | Smartdown is a *declarative*, *literate* and *reactive* authoring technology for writing technical and non-technical documents that are compelling and easy to share and publish within many existing forums and blogging systems. Smartdown is designed for blogging, technical communication, and teaching. Smartdown simplifies the creation of *Explorable Explanations*, which are prose documents with embedded interactive content such as charts, graphs, and featherweight programs called *playables*.
|
6 |
|
7 | Smartdown extends the simple expressivity of the [Markdown](https://en.wikipedia.org/wiki/Markdown) language commonly used on blogs, messaging systems, technical forums, and on [GitHub](https://help.github.com/articles/basic-writing-and-formatting-syntax/). The Smartdown **engine** is a Javascript library that interprets the content in these Smartdown source files and enacts the desired behavior and presentation.
|
8 |
|
9 | ## Ways to Share and Publish Smartdown
|
10 |
|
11 | This repository contains several tools and example web applications to illustrate Smartdown usage. The simplest one shows how to create a Smartdown-enabled site by including the Smartdown library and initializing it with content. The more complex one creates a web application that is able to dynamically accept and render Smartdown documents from a user, via drag-and-drop, file upload, or a URL parameter.
|
12 |
|
13 | ### Simple Smartdown-enabled Site
|
14 |
|
15 | Visible at [https://smartdown.site/lib](https://smartdown.site/lib), this simple Smartdown-enabled site renders a set of Smartdown files. Unlike the Smartdown Viewer Site below, this site does not support editing or the arbitrary display of new Smartdown files. It's basically an example of a static site of Smartdown content.
|
16 |
|
17 | ### Smartdown Viewer Application
|
18 |
|
19 | The Smartdown Viewer application contains the same Gallery examples as above, but also enables a user to view their own content via the application. This can be done via drag-and-drop of a local file, or by specifying the URL of a cloud-based Smartdown file (e.g., a GitHub Gist file).
|
20 |
|
21 | The examples in [Smartdown Site Gallery](https://github.com/DoctorBud/smartdown/tree/master/SimpleSiteExample/gallery) can be run by using an HTTP server and basing the server's root such that `/` refers to your downloaded `smartdown/docs/` directory. This same directory is served via GitHub Pages at [Smartdown Gallery](http://smartdown.site/?url=gallery/Home.md).
|
22 |
|
23 | In order to test locally, you will need an HTTP server and will need to arrange for it to deliver `smartdown/docs` as `/`, to correspond with the expectations of GitHub Pages.
|
24 |
|
25 | I do my testing using the wonderful and light [http-server](https://github.com/indexzero/http-server). The configuration I use is something like:
|
26 |
|
27 | ```bash
|
28 | cd smartdown/ # This is the root of the working directory
|
29 | http-server --cors -c-1 docs/ # Enable CORS, disable caching
|
30 | ```
|
31 |
|
32 | You can then open your browser to [http://127.0.0.1:8080/gallery/](http://127.0.0.1:8080/gallery/) to see the example.
|
33 |
|
34 | If you want to run `http-server` from a different root directory, then you may need to adjust the line in `/gallery/index.html` from:
|
35 |
|
36 | ```
|
37 | <base href="/">
|
38 | ```
|
39 |
|
40 | to something that points to the `smartdown/docs/` directory when expressed via your web server.
|
41 |
|
42 |
|
43 | ### Via GitHub Gist and bl.ocks.org
|
44 |
|
45 | *Need to move documentation to this README* By storing the Smartdown `.md` files in a GitHub Gist, it is easy to use the wonderful `bl.ocks.org` site to view and share this content. See [Smartdown via bl.ocks.org](https://bl.ocks.org/DoctorBud/f3895d12abbe282bcd9a440ff12a0d47) for a Tutorial on how to do this.
|
46 |
|
47 | ### Via a Blog
|
48 |
|
49 | Needs more documentation.
|
50 |
|
51 | Use `blocks_helper.js` (which should be renamed `blog_helper.js`)
|
52 |
|
53 |
|
54 | ### Via Wordpress
|
55 |
|
56 | Needs more documentation.
|
57 |
|
58 | Use `blocks_helper.js` (which should be renamed `blog_helper.js`)
|
59 |
|
60 |
|
61 | ### Via SmartdownPreview
|
62 |
|
63 | For SublimeText users, we have a plugin that takes a set of Smartdown files and colocated resources and bundles them into an easily shareable and published `.html` file. See [SmartdownPreview](https://github.com/LanGuo/SmartDownPreview/) for details.
|
64 |
|
65 |
|
66 | ## Obtaining the Smartdown Library and Examples
|
67 |
|
68 | Although Smartdown will eventually have all of its source code published and licensed under an open source license, it is currently in a rapid development phase and I'm just one person (so far), so I haven't nailed down all the niceties of a proper open source project. In order to effectively beta-test this software, however, I am making available many of the tools and examples as well as the compiled and bundled Smartdown library.
|
69 |
|
70 |
|
71 | ### Usage via CDN
|
72 |
|
73 | The easiest way to play with smartdown is to include the JS and CSS via a CDN. I'm currently using [unpkg.com](https://unpkg.com/) to distribute the compiled `smartdown` NPM module and its assets via CDN.
|
74 |
|
75 |
|
76 | ### Usage via `npm`
|
77 |
|
78 | To use smartdown in a modern web application that has been through a bundler like `browserify` or `webpack`, you can install via npm and then `require('smartdown')` in your application's bundle file (e.g., `app.js` or whatever file contains your `require` statements and application initialization).
|
79 |
|
80 | ```bash
|
81 | npm install smartdown --save
|
82 | ```
|
83 |
|
84 | Unit tests are currently not working, but once they are fixed...
|
85 |
|
86 | npm test
|
87 |
|
88 | ---
|
89 |
|
90 | # smartdown-site
|
91 |
|
92 | This lightweight web application is intended to be deployed as a static single-page website, where the site can then be used to view and render Smartdown files easily.
|
93 |
|
94 | ## Usage
|
95 |
|
96 | ### Examples
|
97 |
|
98 | The app has a few preloaded Smartdown examples.
|
99 |
|
100 | ### Load File or Drag-and-Drop
|
101 |
|
102 | A local Smartdown file can be viewed through the app by using the 'Load File' button or by dragging and dropping a file onto the dropzone
|
103 |
|
104 | ### Load URL
|
105 |
|
106 | A remote Smartdown file can be loaded via URL.
|
107 |
|
108 | *Note that if the remote file is hosted on a website that does not support CORS, then the request will be rejected. Such files can be copied locally and then viewed that way, however.*
|
109 |
|
110 | ### The `url` parameter
|
111 |
|
112 | The `smartdown-viewer` app is designed so that the URL pointing to the app can be amended with an optional `url` parameter that points to a Smartdown file, subject to the same restrictions as Load URL above. For example, suppose this app is hosted on [http://smartdown.site](http://smartdown.site) and a desired Smartdown file is hosted on [http://www.example.com/MySmartdownFile.md](http://www.example.com/MySmartdownFile.md). Then the following URL will launch the smartdown-viewer app and cause it to load and render the specified file:
|
113 |
|
114 | > [http://smartdown.site?url=http://www.example.com/MySmartdownFile.md](http://smartdown.site?url=http://www.example.com/MySmartdownFile.md)
|
115 |
|
116 | ## Requirements to build
|
117 |
|
118 | This is what I use, you may get lucky with slightly older/newer versions.
|
119 |
|
120 | - Node 6.11.2
|
121 | - NPM 5.5.1
|
122 |
|
123 |
|
124 | ## Requirements to run
|
125 |
|
126 | Tested on MacOSX Safari, Chrome and FireFox. Requires some form of http-server. `npm run dev` will invoke the WebPack server for auto-bundling during development, and this is sufficient for demo purposes.
|
127 |
|
128 |
|
129 | ## Building
|
130 |
|
131 | ```
|
132 | cd smartdown/ # If you aren't already there
|
133 | npm install
|
134 | npm run build
|
135 | ```
|
136 |
|
137 | ## Running
|
138 |
|
139 | ```
|
140 | cd site/
|
141 | npm run dev
|
142 | open http://localhost:8080/webpack-dev-server/smartdown-viewer # On MacOSX
|
143 | # Alternatively, point your browser to:
|
144 | # http://localhost:8080/webpack-dev-server/smartdown-viewer
|
145 | #
|
146 | ```
|
147 |
|
148 | ## Markdown and Smartdown
|
149 |
|
150 | [Markdown](https://en.wikipedia.org/wiki/Markdown) is an easy-to-learn set of conventions for annotating text for structure and formatting purposes. Markdown embraces the simple principle that the information in a document should be *readable by default*, and that any additional formatting syntax should be unobtrusive to this readability. Smartdown extends Markdown with additional media and content types for enhanced expressivity, and adds its own features including *cells*, *playables*, and *reactivity*.
|
151 |
|
152 | I think that this principle is important when teaching students (of any age) how to present their ideas and eventually, to visualize their ideas. Unlike HTML and other syntax-restrictive media, Markdown enables an idea to be expressed in a crude form, and then iteratively refined into an ever-better expression of the idea. Sometimes that is simply a blog post with nicely formatted text and embedded graphics. Sometimes it might be an interactive webpage with P5JS graphics, an Explorable Explanation.
|
153 |
|
154 | There are several variants of the original Markdown language; Smartdown adopts the GitHub-flavored Markdown variant as its base language. The basic elements of most Markdown implementations are described in this [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
|
155 |
|
156 | Smartdown extends Markdown's link syntax with the following features (*this documentation is incomplete*)
|
157 |
|
158 | - Links: `[Link Label](:@Location)`
|
159 | - Input Cells: `[Input Label](:?VarName)`
|
160 | - Output Cells: `[Output Label](:!VarName)`
|
161 | - Calculation Cells: `[Calculation Label](:=Expression)`
|
162 | - Checkbox Cells: `[Checkbox Label](:XVarName)`
|
163 | - Tweet: `![](https://twitter.com/nasa/status/735978603431768065)`
|
164 | - Tweet with Image: `![](.../status/735978603431768065&showMedia)`
|
165 |
|
166 | Smartdown extends Markdown's idea of *code blocks* with the option of making such code *playable*. For example, the code for a [Mermaid](https://mermaidjs.github.io) diagram can be displayed normally using a code block; however, by using Smartdown's `/playable` qualifier, the code can be executed and rendered within the document via the Smartdown-generated Play/Pause buttons:
|
167 |
|
168 | ````markdown
|
169 | ```mermaid/playable
|
170 | %% Example of sequence diagram
|
171 |
|
172 | graph LR
|
173 | id1((This is the text in the circle));
|
174 |
|
175 | ```
|
176 | ````
|
177 |
|
178 | There is also an `/autoplay` option, which will ensure that the playable content is executed when the Smartdown card is loaded. These two options may be combined to produced autoplay content that may be manually played and paused.
|
179 |
|
180 | ## Philosophy
|
181 |
|
182 | ### About Smartdown
|
183 |
|
184 | [Smartdown](http://smartdown.site) is a flexible system for authoring and interacting with [Explorable explanations](https://medium.com/@Max_Goldstein/exploring-explorable-explanations-92f865c8d6ba#.10uo10u6k), which are *micro-apps* composed of text, multimedia and code. Smartdown notebooks are written using an enhanced version of Markdown called **Smartdown**, which integrates MarkDown's ease-of-use with a spreadsheet-style reactive process engine.
|
185 |
|
186 | Users of this technology include teachers, students, bloggers, and anyone who wants to easily create and publish their ideas, research, questions or explanations. The mission of Smartdown is to nurture idea inspiration, simplify the process of creation, and to encourage sharing and exploration of the resulting knowledge.
|
187 |
|
188 | Smartdown is intended for teacher and student alike; the philosophy being that the best ways to learn a skill or concept are to **use it** and to **teach it**. A teacher might produce a Smartdown notebook for the purposes of teaching, and may then assign a student the task of *explaining* a learned concept by authoring their own notebook, which can then be shared (*show and tell* is a powerful technique).
|
189 |
|
190 | ### FAQ
|
191 |
|
192 | - **Is this Beta Software?** Yes. It is useful and usable, but it lacks many of the finishing touches necessary for it to be complete.
|
193 | - **Is this open source?** No, not yet. It is currently *Copyright Dan Keith, 2015*. I'm currently working on establishing a core team of developers and the necessary license agreements to assure sustainability of the project. Please contact [feedback@infoclay.com](mailto:feedback@infoclay.com) if you'd like to help, have advice, or want to cheer me on.
|
194 | - **How are you going to make a living off of this?** I have no idea! Smartdown is something I want to exist. I'm hoping that someone else finds it useful and that maybe there will be a way for me to keep working on it. Right now, it's a weekend and spare time project unassociated with my day job.
|
195 | - **How can I provide feedback?** - Send an email to [feedback@infoclay.com](mailto:feedback@infoclay.com); any feedback is appreciated. I am working on creating a more flexible and interactive means of user feedback.
|
196 | - **What is InfoClay?** InfoClay is the name of an interactive authoring environment wherein Smartdown was initially conceived, and then isolated as a separate library. InfoClay is still under development as [KnowBench](https://knowbench.com), but my priorities have been on stabilizing and releasing Smartdown. But in much of the documentation and examples, InfoClay and Smartdown mean the same thing: markdown-based, interactive, reactive explorable explanations.
|
197 |
|
198 | ---
|
199 |
|
200 | ## Contributing
|
201 |
|
202 | ### Pre-Release Warning
|
203 |
|
204 | This software is still incomplete in its implementation, documentation, and attribution. I intend to add much better documentation as well as proper citation of the software I use. Right now, the only way to test it in the real world is to deploy it with a bunch of disclaimers like this one.
|
205 |
|
206 | ### Licensing and Open Source
|
207 |
|
208 | I will be making this project Open Source, but am still determining the proper license and getting all my release processes in place. Until then, the GitHub repository for `smartdown` will remain a Private repository and the software will be Copyright 2015, Daniel B Keith.
|
209 |
|
210 | ### Contact Info
|
211 |
|
212 | Principal Author: Daniel B Keith
|
213 | email: [feedback@infoclay.com](mailto:feedback@infoclay.com)
|
214 | Twitter: @TheDoctorBud
|
215 | GitHub: DoctorBud
|
216 | Blog: [https://doctorbud.com](https://doctorbud.com)
|
217 |
|
218 | ## Release History
|
219 |
|
220 | * 0.0.1 Initial release
|
221 | * 0.0.2 Fix README
|
222 | * 0.0.3 Incorporate Twitter, Video, P5JS, and other features from InfoClay.
|
223 | * 0.0.4 Hack around issue with P5 Sound. Update P5 version. Add more documentation.
|
224 | * 0.0.5 Add documentation about deployment via `npm` and CDN. Fix `xypic.js` issue with MathJax that prevents loading via WordPress. Perform loading of SVG content in `initialize`.
|
225 | * 0.0.6 Decreased load time massively by adopting async patterns. Increased performance and predictibility by controlling MathJax more than the default.
|
226 | * 0.0.7 Call the post-load hook correctly, rather than calling the result of calling the post-load hook.
|
227 | * 0.0.8 CSS Fixes to increase WordPress compatibility. Adds Input, Checkbox, Output, Calc, and GoTo link styles. Adds setHome() function. Renames toHTML() to setSmartdown(). Enhances /example. Adds 'npm run clean'. Adds registerP5() to allow container code to autoplay P5 scripts. Allows SVG URLs or SVG strings to be used. Deals with Twitter not being loaded gracefully.
|
228 | * 0.0.9 Improved README documentation. Enhanced the examples in /examples/. Added table styling. Fix bug in `loadCardsFromDocumentScripts`. Adopt 'Smartdown' vs 'SmartDown' as the name of the module.
|
229 | * 0.0.10 Fix issues with P5 audioContext not being suspended properly on visibilityChanged. Inhibit auto-zoom on iOS Safari. Extends example.md with chemistry. Adjusts some P5 examples to respect window size changes. Use `env` instead of `ic` to pass smartdown variables to P5.
|
230 | * 0.0.11 Adds preliminary external data query capability to Smartdown cells. Adds WikiData data query to example. Improves the Conic Section example. Uses `onkeyup` instead of `onchange` for input cell reactivity. Ensure Smartdown variables are initialized to the empty string.
|
231 | * 0.0.12 Adds more SVGs from game-icons.net. Adds a fallback soundURL so that the P5JS Damscray_DancingTiger.mp3 example sound is obtained from unpkg.com. Simplifies references to in-package resources so that external users of SmartDown can use WebPack.
|
232 | * 0.0.13 Adds Mermaid. Fixes example to be visible on GitHub Pages.
|
233 | * 0.0.14 Fixes package.json to refer to docs/lib/smartdown.js
|
234 | * 0.0.15 Performance improvements. Adds a /site application which enables viewing of Smartdown docs. Adds Graphviz-compatible viewer viz.js. Updates dependencies.
|
235 | * 0.0.16 Remove legacy references to InfoClay assets. Add [Plotly.js](https://plot.ly/javascript/) support. Lazily-initialize Mermaid due to issues with the Mermaid logging system in v7.0. Upgrade to Webpack 2. Use PostCSS. Modernize AngularJS and other NPM modules. Add hacky 'kludgesrc' directory due to some side-effect of Webpack 2 upgrade. Disable auto-repeat of keys in p5 due to a bug in the key 'sticking'.
|
236 | * 0.0.17 Delete unused logging. Added beginnings of conditional and lazy loading of MathJax, Mermaid and other large, optional modules.
|
237 | * 0.0.18 Support optional inclusion of large modules like viz.js, plotly.js. Add very simple standalone example. Add multipart capability to allow several cards to be encoded in a single document. Improve Plotly behavior. Add backquote-based indirection to smartdown lookup syntax.
|
238 | * 0.0.19 Fix bug ensuring MathJax executes when Mermaid is used. Add initial support for a Reload button, which works in Chrome but not Safari.
|
239 | * 0.0.20 Add a CodeMirror-enabled editing mode to the viewer site, although there is no explicit Save operation yet. Fix a bug in XyJax that caused a harmless exception during processing of left/right braces, parentheses and brackets (e.g., `$\left(foo\right)$`). Added preliminary support for AsciiMath syntax via `@foo@`. Fixed (hack) a problem with P5JS Sound where suspend/resume didn't work properly.
|
240 | * 0.0.21 Add optional `player` keyword to image URL titles so enable play/pause of GIF. Revert P5 to 0.5.7 due to bug in 0.5.8 that inhibited touches on iOS Safari.
|
241 | * 0.0.22 Restore P5JS 0.5.8. Work around bug in 0.5.8 with monkeypatch. Fix duplicate startAutoplay() calls. Ensure btn-mobile-button classes are available in core smartdown.
|
242 | * 0.0.23 Update packages. Add D3 Sankey, Make Twitter load lazily.
|
243 | * 0.0.24 Fix MathJax CDN
|
244 | * 0.0.25 Generalize the idea of playable/autoplay content such as P5JS, Plotly, Mermaid, etc. Refactored so that Mermaid diagrams are rendered more efficiently. Added 'd3' as a content type. Unified how the Smartdown environment is made available to playable content. Adds Leaflet.js. Cleans up CSS styling so that cells can be inlined or newlined depending on whether a label is present.
|
245 | * 0.0.26 Fix reference to MP3 example file to point to /lib/resources/. Reduce bundle size by eliminating bulky example files. Update Babel to latest. Add support for MP3 embedding. Fix multipart handling so that a nested multipart doesn't erase the map. Add GeoLocation example. Begin adding mocha tests.
|
246 | * 0.0.27 Removed unnecessary (and possibly, bloating) viz.js import from the Smartdown Viewer app. Modernized webpack config for the viewer app, including the use of noParse and aliases and vendor bundles to manage the bundle size. Change default soundURL to use unpkg.com due to CORS issues with CloudFlare.
|
247 | * 0.0.28 Add linkRewrite rules (optional) to smartdown.initialize(), so that URLs can be rewritten prior to HTML expansion. Add favicon.ico.
|
248 | * 0.0.29 Consistify CSS and Fonts. Eliminate horizontal scrolling issues due to SVG and MathJax. Clean up CSS. Use Asap and UbuntuMono fonts. Increase default font-size to 16px. Fix cells so that they can handle multiline input and output. Use bootstrap-theme for SimpleSiteExample and SmartdownViewer.
|
249 | * 0.0.30 Improve WebPack minimization. Load viz.js dynamically rather than bundling it.
|
250 | * 0.0.31 Add WikiData handlers as an optional default. Ensure that 'smartdown' is a window global variable for use by these handlers. Improve keydown-handler to be aware of keydown target when inhibiting arrow/space keys. Add Sound On/Off to Games.md example. Styling improvements for code/pre.
|
251 | * 0.0.32 Use div for infocell-output rather than span, to allo for pre blocks to be 100%. Fix reference to window.getPathPrefix() so it works after minification. Add Images to Home.md.
|
252 | * 0.0.33 Undo use of div for infocell-output, it was a bad idea.
|
253 | * 0.0.34 Adds several more examples, including Markdown, Cuneiform, Mobius, VectorField, Tree, and VectorTree. Makes Map of Functionality in Home.md more compact. Increase padding around smartdown-container. Add PNG examples to /resources.
|
254 | * 0.0.35 Fix Leaflet default icon to use the webpack-bundled version of the marker images. Fix bug where links to the same origin as the hosting site would be doubly prefixed with the origin.
|
255 | * 0.0.36 Update Games.md example to use new sound and look better. Improve Reactivity and Async capability by enabling playables to *depend* on Smartdown variables, which trigger a dependency reaction when changed. Added a distinction between expressions, which react automatically as in a spreadsheet, and *gated* expressions, which use a button to trigger the computation. Cleaned up various styles. Renamed smartdown.cellChanged() to .setVariable(). Fix bugs with non-string datatypes being stored in Smartdown. Use airbnb-base ESLint styles. Update NPM packages. Add input/output datatype specification and transformation in cell syntax. Add a preliminary Processes.md document describing these new capabilities. Add ability to specify 'markdown' as a cell's datatype, resulting in the dynamic rendering of Smartdown from a variable. Adds [d3fc](https://d3fc.io) to the d3-suite. Cleaned up styling for Object and Array types.
|
256 | 0.0.37 Enhance `Processes.md` documentation and examples. Add [stdlib](https://github.com/stdlib-js/stdlib) as a builtin library. Update Cells documentation with the cell output filter syntax. Fix an error where changing the smartdown text on a multicard project would not render output cells with latest values. Fixed a CSS problem that caused output cells to be displayed with inline-block. Add [Three](https://threejs.org). Add [TopoJSON](https://github.com/topojson/topojson). Fix bug where /media image references weren't working.
|
257 | 0.0.38 Fix a bug where a cell's destruction would not clean up its resources. Add setVariables() call. Update Processes.md example to provide a useful default when no Geolocation was available.
|
258 | 0.0.39 Update Mermaid and disable excessive Mermaid logging. Update P5 and eliminate use of p5.sound.js hack. Add more Stdlib support and examples. Increase padding on cell labels. Delete generateModelFromMarkdown(), which is only used in InfoClay/Knowbench. Implement lexical ordering-based autoplay, so that scripts execute in a deterministic order from top to bottom of a smartdown document. Add ability for a CALC cell to specify a datatype for the assignment. Enhance/document the Stdlib example.
|
259 | 0.0.40 Update stdlib. Add a CDF plotting example to stdlib. Add a Graphviz and a Markdown display of the 'stdlib'. Add 'json', 'code' and 'graphviz' output filters. Streamline MathJax configuration. Fix ugly flashing with MathJax. Add URL hash management to SimpleSiteExample. Limit the SOTU dataset to 1930-2010 to reduce bundle size.
|
260 | 0.0.41 Use Dynamic Import to lazy load the SOTU data (10Mb of it). Fix bug where an unrealized Plotly playable failed during resize.
|
261 | 0.0.42 Clean up Math example. Add padding to Mathjax_display. Ensure stdlib-sotu.js is exported to top level of smartdown.site.
|
262 | 0.0.43 Change background color (again). Adjust how images are scaled/centered. Add dynamic Mermaid and enhance the Mermaid examples. Add blocks_helper.js to support bl.ocks.org publishing of Smartdown. Force Twitter to load, rather than the sketchy lazy-loading I was using. Apply linkRules to IMG as well as A tags. Update stdlib.
|
263 | 0.0.44 Add smartdown.setLinkRules(). Make smartdown viewer able to handle relative card links and media refs. Fix issue with /SimpleSiteExample not using doctype, resulting in misdrawn play/stop buttons. Improved dependency/reactivity immensely. The this.dependOn property may be set to a list of variable names that the playable depends on, and the this.depend() method is only invoked when all dependOns are defined or changed.
|
264 | 0.0.45 Update dependencies. Clean up examples. Fix arrow-key handlers for P5JS. Make Twitter require image embedding syntax. Restore lazy-loading of Twitter, but do it right.
|
265 | 0.0.46 Add /assets and /content linkRule to support link to external Markdown examples that refer to media in those subdirectories. This is sort of a hack until I teach Smartdown how to get its own assets without requiring the base href to be pointing at Smartdown. Slight changes to default background color and code highlighting color. Add Splitter bar to Viewer when in CodeMirror mode. Update docs and examples. Add progress bars to indicate dependendent playables (waiting for their dependOn vars to be fulfilled). General cleanup and DRYing of the code. Scroll to top of page when GoToCard. Disable pointer-events during body scrolling.
|
266 | 0.0.47 Update SimpleSite, Viewer, and blocks_helper.js to deal with forward/back browser buttons and scrollToTop when going to new card. Remove duplicate Mobius example from P5JS. Move Conic into its own Card. Remove border/background from smartdown-playable CSS. Improve disable-hover CSS so that buttons/inputs still receive pointer-events during body scroll. Improve Conic example.
|
267 | 0.0.48 Fix issue where playable source div is not scrollable. Fix edge cases where progress bar was either not displayed or not removed. Add inline_helper.js to support BlogKit and other cases where Smartdown is inlined via application/x-smartdown.
|
268 | 0.0.49 Generalize all of the _helper.js files into a single multipurpose blog_helper.js. Remove dependency on Bootstrap and Glyphicon by making explicit CSS. Fix some of the P5 examples to adjust canvas width properly when window resized. Fix startAutoplay to verify that output div has id.
|
269 | 0.0.50 Adds ability to optionally add *transformers*, which allow for a playable's source to be asynchronously translated into a form (e.g., Javascript) suitable for subsequent playing. This is to support the [GoDown](https://github.com/DoctorBud/godown) experiment. Makes the font-sizing of Input and Output cells respect their environment, so that an H1 header with an output cell has properly sized text. Fixes a DOM-leak when setSmartdown is called repeatedly on the same div.
|
270 | 0.0.51 Fix CSS to be robust whether Bootstrap is present or not. Ensure that playables are initialized serially (and asynchronously) to support GoDown and other lexically dependent playables. Add Godown_Shutdown() call when resetting a Go playable.
|
271 | 0.0.52 Fix bug preventing links with image-as-label from being clickable. Allow for media to be registered with Smartdown and made available for Graphviz image use. Adjust blocks_helper.js to work with Gist paths such as '/drbud/somegistID'. Generate an alternate '/gist' root to support Gist-style paths. Add early-stage experimental output filter `|svg` to enable dynamic SVG generation/substitution. Add Gists.md card to document Gist URL features.
|
272 | 0.0.53 Incorporates more examples from the original InfoClay. Fixes bugs in dynamic URLs. Adds dynamic substitution to URL labels. Fix sizing of SVGs to be more responsive.
|
273 | 0.0.54 Adds throttling to the Viewer editor. Adjusts layout of Gallery. Updates Gallery content. Adds smartdown.resetPerPageState(). Adds GoDown support and example. Adds Dungeon GIFs.
|
274 | 0.0.55 Fix how Gist paths are processed. Ensure that /gist/ without an org/id pair will default to the Gists.md card.
|
275 | 0.0.56 Work around CSS problems with Mermaid. Fix scaling of GraphViz so physical dimensions via 'size' are respected, if possible. Changed Smartdown Viewer's URL resolution to match that in the Simple Site Example, to support Gists as well as to deprecate the '?url=' parameter in favor of putting the URL in the hash. Updated various packages, including Marked, which is now fixed against the XSS attacks. Adds Mandelbrot.md example. Allow for Smartdown Calcs to have a series of semicolon-delimited assignments, all associated with the same button/trigger.
|
276 | 0.0.57 Update Marked to latest version. Tweak mermaid styles. Add resize vertical option to playable-source. Adds js-yaml as window.jsyaml, for convenience in Smartdown scripts.
|
277 | 0.0.58 Add starter.js to simplify use of Smartdown via JSFiddle/CodePen/Blocks. Update Gists example. Add LinkedDataFragments Client. Add LDF Example.
|
278 | 0.0.59 Add starter.js (this time for sure).
|
279 | 0.0.60 Update LDF.md. Fix image sizing in tables.
|
280 | 0.0.61 Adds d3-cloud and an example of the YouTube API. Improves Gist handling so that inter-gist linking works and that per-Gist resources (e.g., images) are accessed correctly based upon the referencing Gist. Try to unify around starter.js as the Smartdown loader.
|
281 | 0.0.62 Adds HTML input type=range to provide sliders for numeric inputs. Fixes change detection to respect 0 vs undefined, so that Null Island may be located. Use local version of Google Fonts. Lazily load and initialize Mermaid. Don't bundle Smartdown with the Viewer to reduce build times and load times. Improve reactivity behavior when a multi-assignment cell is executed. Make leaflet/plotly divs resizable. Fixed issue with CodeMirror refreshing and scrolling unnecessarily.
|
282 | 0.0.63 Simplifies and makes more uniform the way that media is embedded. Under the new system, media URLs must be enclosed in Markdown Image syntax for the embedding to occur. Enhanced many examples. Added thumbnail/fullwidth options to video embeds. Cleaned up and documented many gallery examples. Adds smartdown-dark CSS class to provide a game-style theme. Fix reactivity issues where an async calcHandler would result in renderCell rendering undefined values.
|
283 |
|
284 |
|
\ | No newline at end of file |