UNPKG

29.6 kBMarkdownView Raw
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
5Smartdown 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
7Smartdown 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
11This 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
15Visible 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
19The 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
21The 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
23In 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
25I 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
32You 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
34If 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
40to 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
49Needs more documentation.
50
51Use `blocks_helper.js` (which should be renamed `blog_helper.js`)
52
53
54### Via Wordpress
55
56Needs more documentation.
57
58Use `blocks_helper.js` (which should be renamed `blog_helper.js`)
59
60
61### Via SmartdownPreview
62
63For 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
68Although 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
73The 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
78To 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
81npm install smartdown --save
82```
83
84Unit tests are currently not working, but once they are fixed...
85
86 npm test
87
88---
89
90# smartdown-site
91
92This 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
98The app has a few preloaded Smartdown examples.
99
100### Load File or Drag-and-Drop
101
102A 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
106A 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
112The `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
118This 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
126Tested 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```
132cd smartdown/ # If you aren't already there
133npm install
134npm run build
135```
136
137## Running
138
139```
140cd site/
141npm run dev
142open 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
152I 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
154There 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
156Smartdown 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
166Smartdown 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
172graph LR
173 id1((This is the text in the circle));
174
175```
176````
177
178There 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
186Users 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
188Smartdown 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
204This 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
208I 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
212Principal Author: Daniel B Keith
213email: [feedback@infoclay.com](mailto:feedback@infoclay.com)
214Twitter: @TheDoctorBud
215GitHub: DoctorBud
216Blog: [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.
2560.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.
2570.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.
2580.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.
2590.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.
2600.0.41 Use Dynamic Import to lazy load the SOTU data (10Mb of it). Fix bug where an unrealized Plotly playable failed during resize.
2610.0.42 Clean up Math example. Add padding to Mathjax_display. Ensure stdlib-sotu.js is exported to top level of smartdown.site.
2620.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.
2630.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.
2640.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.
2650.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.
2660.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.
2670.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.
2680.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.
2690.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.
2700.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.
2710.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.
2720.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.
2730.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.
2740.0.55 Fix how Gist paths are processed. Ensure that /gist/ without an org/id pair will default to the Gists.md card.
2750.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.
2760.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.
2770.0.58 Add starter.js to simplify use of Smartdown via JSFiddle/CodePen/Blocks. Update Gists example. Add LinkedDataFragments Client. Add LDF Example.
2780.0.59 Add starter.js (this time for sure).
2790.0.60 Update LDF.md. Fix image sizing in tables.
2800.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.
2810.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.
2820.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