2017-11-02 17:50:47 +01:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< link rel = "canonical" href = "https://thepaciellogroup.github.io/cupper/patterns/coding/writing-inline-demos/" >
< link rel = "apple-touch-icon" sizes = "57x57" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-57x57.png" >
< link rel = "apple-touch-icon" sizes = "60x60" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-60x60.png" >
< link rel = "apple-touch-icon" sizes = "72x72" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-72x72.png" >
< link rel = "apple-touch-icon" sizes = "76x76" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-76x76.png" >
< link rel = "apple-touch-icon" sizes = "114x114" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-114x114.png" >
< link rel = "apple-touch-icon" sizes = "120x120" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-120x120.png" >
< link rel = "apple-touch-icon" sizes = "144x144" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-144x144.png" >
< link rel = "apple-touch-icon" sizes = "152x152" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-152x152.png" >
< link rel = "apple-touch-icon" sizes = "180x180" href = "https://thepaciellogroup.github.io/cupper/images/apple-touch-icon-180x180.png" >
< link rel = "icon" type = "image/png" sizes = "192x192" href = "https://thepaciellogroup.github.io/cupper/images/android-icon-192x192.png" >
< link rel = "icon" type = "image/png" sizes = "32x32" href = "https://thepaciellogroup.github.io/cupper/images/favicon-32x32.png" >
< link rel = "icon" type = "image/png" sizes = "96x96" href = "https://thepaciellogroup.github.io/cupper/images/favicon-96x96.png" >
< link rel = "icon" type = "image/png" sizes = "16x16" href = "https://thepaciellogroup.github.io/cupper/images/favicon-16x16.png" >
< meta name = "msapplication-TileColor" content = "#ffffff" >
< meta name = "msapplication-TileImage" content = "https://thepaciellogroup.github.io/cupper/images/ms-icon-144x144.png" >
< meta name = "theme-color" content = "#ffffff" >
< link href = "https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" rel = "stylesheet" media = "none" onload = "this.media='all';" >
< link rel = "stylesheet" href = "https://thepaciellogroup.github.io/cupper/css/prism.css" media = "none" onload = "this.media='all';" >
< link rel = "stylesheet" type = "text/css" href = "https://thepaciellogroup.github.io/cupper/css/styles.css" >
< style id = "inverter" media = "none" >
html { filter: invert(100%) }
* { background-color: inherit }
img:not([src*=".svg"]), .colors, iframe, .demo-container { filter: invert(100%) }
< / style >
< title >
Writing inline demos | Cupper
< / title >
< / head >
< body >
< a href = "#main" > skip to content< / a >
< svg style = "display: none" >
< symbol id = "bookmark" viewBox = "0 0 40 50" >
< g transform = "translate(2266 3206.2)" >
< path style = "stroke:currentColor;stroke-width:3.2637;fill:none" d = "m-2262.2-3203.4-.2331 42.195 16.319-16.318 16.318 16.318.2331-42.428z" / >
< / g >
< / symbol >
< symbol id = "w3c" viewBox = "0 0 127.09899 67.763" >
< text font-size = "83" style = "font-size:83px;font-family:Trebuchet;letter-spacing:-12;fill-opacity:0" letter-spacing = "-12" y = "67.609352" x = "-26.782778" > W3C< / text >
< text font-size = "83" style = "font-size:83px;font-weight:bold;font-family:Trebuchet;fill-opacity:0" y = "67.609352" x = "153.21722" font-weight = "bold" > SVG< / text >
< path style = "fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d = "m33.695.377 12.062 41.016 12.067-41.016h8.731l-19.968 67.386h-.831l-12.48-41.759-12.479 41.759h-.832l-19.965-67.386h8.736l12.061 41.016 8.154-27.618-3.993-13.397h8.737z" / >
< path style = "fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d = "m91.355 46.132c0 6.104-1.624 11.234-4.862 15.394-3.248 4.158-7.45 6.237-12.607 6.237-3.882 0-7.263-1.238-10.148-3.702-2.885-2.47-5.02-5.812-6.406-10.022l6.82-2.829c1.001 2.552 2.317 4.562 3.953 6.028 1.636 1.469 3.56 2.207 5.781 2.207 2.329 0 4.3-1.306 5.909-3.911 1.609-2.606 2.411-5.738 2.411-9.401 0-4.049-.861-7.179-2.582-9.399-1.995-2.604-5.129-3.912-9.397-3.912h-3.327v-3.991l11.646-20.133h-14.062l-3.911 6.655h-2.493v-14.976h32.441v4.075l-12.31 21.217c4.324 1.385 7.596 3.911 9.815 7.571 2.22 3.659 3.329 7.953 3.329 12.892z" / >
< path style = "fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d = "m125.21 0 1.414 8.6-5.008 9.583s-1.924-4.064-5.117-6.314c-2.693-1.899-4.447-2.309-7.186-1.746-3.527.73-7.516 4.938-9.258 10.13-2.084 6.21-2.104 9.218-2.178 11.978-.115 4.428.58 7.043.58 7.043s-3.04-5.626-3.011-13.866c.018-5.882.947-11.218 3.666-16.479 2.404-4.627 5.954-7.404 9.114-7.728 3.264-.343 5.848 1.229 7.841 2.938 2.089 1.788 4.213 5.698 4.213 5.698l4.94-9.837z" / >
< path style = "fill:currentColor;image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d = "m125.82 48.674s-2.208 3.957-3.589 5.48c-1.379 1.524-3.849 4.209-6.896 5.555-3.049 1.343-4.646 1.598-7.661 1.306-3.01-.29-5.807-2.032-6.786-2.764-.979-.722-3.486-2.864-4.897-4.854-1.42-2-3.634-5.995-3.634-5.995s1.233 4.001 2.007 5.699c.442.977 1.81 3.965 3.749 6.572 1.805 2.425 5.315 6.604 10.652 7.545 5.336.945 9.002-1.449 9.907-2.031.907-.578 2.819-2.178 4.032-3.475 1.264-1.351 2.459-3.079 3.116-4.108.487-.758 1.276-2.286 1.276-2.286l-1.276-6.644z" / >
< / symbol >
< symbol id = "tag" viewBox = "0 0 177.16535 177.16535" >
< g transform = "translate(0 -875.2)" >
< path style = "fill-rule:evenodd;stroke-width:0;fill:currentColor" d = "m159.9 894.3-68.79 8.5872-75.42 77.336 61.931 60.397 75.429-76.565 6.8495-69.755zm-31.412 31.835a10.813 10.813 0 0 1 1.8443 2.247 10.813 10.813 0 0 1 -3.5174 14.872l-.0445.0275a10.813 10.813 0 0 1 -14.86 -3.5714 10.813 10.813 0 0 1 3.5563 -14.863 10.813 10.813 0 0 1 13.022 1.2884z" / >
< / g >
< / symbol >
< symbol id = "balloon" viewBox = "0 0 141.73228 177.16535" >
< g transform = "translate(0 -875.2)" >
< g >
< path style = "fill:currentColor" d = "m68.156 882.83-.88753 1.4269c-4.9564 7.9666-6.3764 17.321-5.6731 37.378.36584 10.437 1.1246 23.51 1.6874 29.062.38895 3.8372 3.8278 32.454 4.6105 38.459 4.6694-.24176 9.2946.2879 14.377 1.481 1.2359-3.2937 5.2496-13.088 8.886-21.623 6.249-14.668 8.4128-21.264 10.253-31.252 1.2464-6.7626 1.6341-12.156 1.4204-19.764-.36325-12.93-2.1234-19.487-6.9377-25.843-2.0833-2.7507-6.9865-7.6112-7.9127-7.8436-.79716-.20019-6.6946-1.0922-6.7755-1.0248-.02213.0182-5.0006-.41858-7.5248-.22808l-2.149-.22808h-3.3738z" / >
< path style = "fill:currentColor" d = "m61.915 883.28-3.2484.4497c-1.7863.24724-3.5182.53481-3.8494.63994-2.4751.33811-4.7267.86957-6.7777 1.5696-.28598 0-1.0254.20146-2.3695.58589-5.0418 1.4418-6.6374 2.2604-8.2567 4.2364-6.281 7.6657-11.457 18.43-12.932 26.891-1.4667 8.4111.71353 22.583 5.0764 32.996 3.8064 9.0852 13.569 25.149 22.801 37.517 1.3741 1.841 2.1708 2.9286 2.4712 3.5792 3.5437-1.1699 6.8496-1.9336 10.082-2.3263-1.3569-5.7831-4.6968-21.86-6.8361-33.002-.92884-4.8368-2.4692-14.322-3.2452-19.991-.68557-5.0083-.77707-6.9534-.74159-15.791.04316-10.803.41822-16.162 1.5026-21.503 1.4593-5.9026 3.3494-11.077 6.3247-15.852z" / >
< path style = "fill:currentColor" d = "m94.499 885.78c-.10214-.0109-.13691 0-.0907.0409.16033.13489 1.329 1.0675 2.5976 2.0723 6.7003 5.307 11.273 14.568 12.658 25.638.52519 4.1949.24765 14.361-.5059 18.523-2.4775 13.684-9.7807 32.345-20.944 53.519l-3.0559 5.7971c2.8082.76579 5.7915 1.727 8.9926 2.8441 11.562-11.691 18.349-19.678 24.129-28.394 7.8992-11.913 11.132-20.234 12.24-31.518.98442-10.02-1.5579-20.876-6.7799-28.959-.2758-.4269-.57803-.86856-.89617-1.3166-3.247-6.13-9.752-12.053-21.264-16.131-2.3687-.86369-6.3657-2.0433-7.0802-2.1166z" / >
< path style = "fill:currentColor" d = "m32.52 892.22c-.20090-.13016-1.4606.81389-3.9132 2.7457-11.486 9.0476-17.632 24.186-16.078 39.61.79699 7.9138 2.4066 13.505 5.9184 20.562 5.8577 11.77 14.749 23.219 30.087 38.74.05838.059.12188.1244.18052.1838 1.3166-.5556 2.5965-1.0618 3.8429-1.5199-.66408-.32448-1.4608-1.3297-3.8116-4.4602-5.0951-6.785-8.7512-11.962-13.051-18.486-5.1379-7.7948-5.0097-7.5894-8.0586-13.054-6.2097-11.13-8.2674-17.725-8.6014-27.563-.21552-6.3494.13041-9.2733 1.775-14.987 2.1832-7.5849 3.9273-10.986 9.2693-18.07 1.7839-2.3656 2.6418-3.57 2.4409-3.7003z" / >
< path style = "fill:currentColor" d = "m69.133 992.37c-6.2405.0309-12.635.76718-19.554 2.5706 4.6956 4.7759 9.935 10.258 12.05 12.625l4.1272 4.6202h11.493l3.964-4.4516c2.0962-2.3541 7.4804-7.9845 12.201-12.768-8.378-1.4975-16.207-2.6353-24.281-2.5955z" / >
< rect style = "stroke-width:0;fill:currentColor" ry = "2.0328" height = "27.746" width = "22.766" y = "1017.7" x = "60.201" / >
< / g >
< / g >
< / symbol >
< symbol id = "info" viewBox = "0 0 41.667 41.667" >
< g transform = "translate(-37.035 -1004.6)" >
< path style = "stroke-linejoin:round;stroke:currentColor;stroke-linecap:round;stroke-width:3.728;fill:none" d = "m76.25 1030.2a18.968 18.968 0 0 1 -23.037 13.709 18.968 18.968 0 0 1 -13.738 -23.019 18.968 18.968 0 0 1 23.001 -13.768 18.968 18.968 0 0 1 13.798 22.984" / >
< g transform = "matrix(1.1146 0 0 1.1146 -26.276 -124.92)" >
< path style = "stroke:currentColor;stroke-linecap:round;stroke-width:3.728;fill:none" d = "m75.491 1039.5v-8.7472" / >
< path style = "stroke-width:0;fill:currentColor" transform = "scale(-1)" d = "m-73.193-1024.5a2.3719 2.3719 0 0 1 -2.8807 1.7142 2.3719 2.3719 0 0 1 -1.718 -2.8785 2.3719 2.3719 0 0 1 2.8763 -1.7217 2.3719 2.3719 0 0 1 1.7254 2.8741" / >
< / g >
< / g >
< / symbol >
< symbol id = "warning" viewBox = "0 0 48.430474 41.646302" >
< g transform = "translate(-1.1273 -1010.2)" >
< path style = "stroke-linejoin:round;stroke:currentColor;stroke-linecap:round;stroke-width:4.151;fill:none" d = "m25.343 1012.3-22.14 37.496h44.28z" / >
< path style = "stroke:currentColor;stroke-linecap:round;stroke-width:4.1512;fill:none" d = "m25.54 1027.7v8.7472" / >
< path style = "stroke-width:0;fill:currentColor" d = "m27.839 1042.8a2.3719 2.3719 0 0 1 -2.8807 1.7143 2.3719 2.3719 0 0 1 -1.718 -2.8785 2.3719 2.3719 0 0 1 2.8763 -1.7217 2.3719 2.3719 0 0 1 1.7254 2.8741" / >
< / g >
< / symbol >
< symbol id = "menu" viewBox = "0 0 50 50" >
< rect style = "stroke-width:0;fill:currentColor" height = "10" width = "50" y = "0" x = "0" / >
< rect style = "stroke-width:0;fill:currentColor" height = "10" width = "50" y = "20" x = "0" / >
< rect style = "stroke-width:0;fill:currentColor" height = "10" width = "50" y = "40" x = "0" / >
< / symbol >
< symbol id = "link" viewBox = "0 0 50 50" >
< g transform = "translate(0 -1002.4)" >
< g transform = "matrix(.095670 0 0 .095670 2.3233 1004.9)" >
< g >
< path style = "stroke-width:0;fill:currentColor" d = "m452.84 192.9-128.65 128.65c-35.535 35.54-93.108 35.54-128.65 0l-42.881-42.886 42.881-42.876 42.884 42.876c11.845 11.822 31.064 11.846 42.886 0l128.64-128.64c11.816-11.831 11.816-31.066 0-42.9l-42.881-42.881c-11.822-11.814-31.064-11.814-42.887 0l-45.928 45.936c-21.292-12.531-45.491-17.905-69.449-16.291l72.501-72.526c35.535-35.521 93.136-35.521 128.64 0l42.886 42.881c35.535 35.523 35.535 93.141-.001 128.66zm-254.28 168.51-45.903 45.9c-11.845 11.846-31.064 11.817-42.881 0l-42.884-42.881c-11.845-11.821-11.845-31.041 0-42.886l128.65-128.65c11.819-11.814 31.069-11.814 42.884 0l42.886 42.886 42.876-42.886-42.876-42.881c-35.54-35.521-93.113-35.521-128.65 0l-128.65 128.64c-35.538 35.545-35.538 93.146 0 128.65l42.883 42.882c35.51 35.54 93.11 35.54 128.65 0l72.496-72.499c-23.956 1.597-48.092-3.784-69.474-16.283z" / >
< / g >
< / g >
< / g >
< / symbol >
< symbol id = "doc" viewBox = "0 0 35 45" >
< g transform = "translate(-147.53 -539.83)" >
< path style = "stroke:currentColor;stroke-width:2.4501;fill:none" d = "m149.38 542.67v39.194h31.354v-39.194z" / >
< g style = "stroke-width:25" transform = "matrix(.098003 0 0 .098003 133.69 525.96)" >
< path d = "m220 252.36h200" style = "stroke:currentColor;stroke-width:25;fill:none" / >
< path style = "stroke:currentColor;stroke-width:25;fill:none" d = "m220 409.95h200" / >
< path d = "m220 488.74h200" style = "stroke:currentColor;stroke-width:25;fill:none" / >
< path d = "m220 331.15h200" style = "stroke:currentColor;stroke-width:25;fill:none" / >
< / g >
< / g >
< / symbol >
< symbol id = "tick" viewBox = "0 0 177.16535 177.16535" >
< g transform = "translate(0 -875.2)" >
< rect style = "stroke-width:0;fill:currentColor" transform = "rotate(30)" height = "155" width = "40" y = "702.99" x = "556.82" / >
< rect style = "stroke-width:0;fill:currentColor" transform = "rotate(30)" height = "40" width = "90.404" y = "817.99" x = "506.42" / >
< / g >
< / symbol >
< / svg >
< div class = "wrapper " >
< header class = "intro-and-nav" role = "banner" >
< div >
< div class = "intro" >
< a class = "logo" href = "https://thepaciellogroup.github.io/cupper/" aria-label = "Cupper home page" >
< img src = "https://thepaciellogroup.github.io/cupper/images/logo.svg" alt = "" >
< / a >
< p class = "library-desc" >
Documentation for the < strong > Cupper< / strong > documentation builder, built with < strong > Cupper< / strong > itself.
< a class = "print" href = "https://thepaciellogroup.github.io/cupper/print-version" >
< svg viewBox = "0 0 35 45" aria-hidden = "true" focusable = "false" >
< use xlink:href = "#doc" > < / use >
< / svg > Print version
< / a >
< / p >
< / div >
< nav id = "patterns-nav" class = "patterns" role = "navigation" >
< h2 class = "vh" > Main navigation< / h2 >
< button id = "menu-button" aria-expanded = "false" >
< svg viewBox = "0 0 50 50" aria-hidden = "true" focusable = "false" >
< use xlink:href = "#menu" > < / use >
< / svg >
Menu
< / button >
< ul id = "patterns-list" >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/installation/" >
< svg class = "bookmark-icon" aria-hidden = "true" focusable = "false" viewBox = "0 0 40 50" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Installation< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/setup/" >
< svg class = "bookmark-icon" aria-hidden = "true" focusable = "false" viewBox = "0 0 40 50" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Setup< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/serving/" >
< svg class = "bookmark-icon" aria-hidden = "true" focusable = "false" viewBox = "0 0 40 50" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Serving< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/printing/" >
< svg class = "bookmark-icon" aria-hidden = "true" focusable = "false" viewBox = "0 0 40 50" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Printing< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/updating/" >
< svg class = "bookmark-icon" aria-hidden = "true" focusable = "false" viewBox = "0 0 40 50" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Updating Cupper< / span >
< / a >
< / li >
< li >
< h3 > Writing< / h3 >
< ul >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/project-structure/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Project structure< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/markdown-and-metadata/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Markdown & metadata< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/expandable-sections/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Expandable sections< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/notes-and-warnings/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Notes & warnings< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/references/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > References< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/snippets/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Snippets< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/writing/tables-of-contents/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Tables of contents< / span >
< / a >
< / li >
< / ul >
< / li >
< li >
< h3 > Media< / h3 >
< ul >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/media/including-images/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Including images< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/media/including-videos/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Including videos< / span >
< / a >
< / li >
< / ul >
< / li >
< li >
< h3 > Coding< / h3 >
< ul >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/code-blocks/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Code blocks< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/demo-embedding/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Demo embedding< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/writing-inline-demos/" aria-current = "page" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Writing inline demos< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/color-palettes/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Color palettes< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/command-line/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Command line< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/file-trees/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > File trees< / span >
< / a >
< / li >
< li class = "pattern" >
< a href = "https://thepaciellogroup.github.io/cupper/patterns/coding/tested/" >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
< span class = "text" > Tested using...< / span >
< / a >
< / li >
< / ul >
< / li >
< / ul >
< / nav >
< / div >
< / header >
< div class = "main-and-footer" >
< div >
< main id = "main" >
< h1 >
< svg class = "bookmark-icon" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" >
< use xlink:href = "#bookmark" > < / use >
< / svg >
Writing inline demos
< / h1 >
< nav class = "toc" aria-labelledby = "toc-heading" >
< h2 id = "toc-heading" > Table of contents< / h2 >
< ol >
< li >
2017-12-02 13:18:34 +01:00
< a href = "#styling-the-container" >
Styling the container
2017-11-02 17:50:47 +01:00
< / a >
< / li >
< li >
2017-12-02 13:18:34 +01:00
< a href = "#launch" >
“Launch”
2017-11-02 17:50:47 +01:00
< / a >
< / li >
< li >
2017-12-02 13:18:34 +01:00
< a href = "#captioned-demos" >
Captioned demos
2017-11-02 17:50:47 +01:00
< / a >
< / li >
< / ol >
< / nav >
< p > There are some issues with < a class = "pattern-link" href = "https://thepaciellogroup.github.io/cupper/patterns/coding/demo-embedding/" > < svg class = "bookmark" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" > < use xlink:href = "#bookmark" > < / use > < / svg > Demo embedding< / a > , like the embeds not working offline. They also come with their own branding, which will clash with the pattern you’ re trying to illustrate.< / p >
< p > < strong > Cupper< / strong > offers another option: a special < code > demo< / code > shortcode that allows you to write HTML, CSS, and JavaScript directly into the markdown file. The outputted demo is encapsulated using Shadow DOM, so you don’ t have to worry about broken styles and global JS.< / p >
< p > Here’ s the example code for an inline demo of a toggle button:< / p >
< pre class = "language-html" > < code class = "language-html" data-codeblock-shortcode >
{ {< demo>}}
< button aria-pressed="false">Toggle Me< /button>
< style>
button {
background: DarkCyan;
color: white;
border: 0;
font-size: 1.5rem;
padding: 0.5em 1em;
border-right: 5px solid #000;
border-bottom: 5px solid #000;
}
[aria-pressed="true"] {
border: 0;
border-top: 5px solid #000;
border-left: 5px solid #000;
}
< /style>
< script>
var toggle = demo.querySelector('[aria-pressed]');
toggle.addEventListener('click', (e) => {
let pressed = e.target.getAttribute('aria-pressed') === 'true';
e.target.setAttribute('aria-pressed', !pressed);
});
< /script>
{ {< /demo>}}
< / code > < / pre >
< p > Note the < code > demo.querySelector< / code > on line < code > 21< / code > . < strong > Cupper< / strong > automatically provides < code > demo< / code > , representing the root node of the demo. It’ s like the < code > document< / code > keyword but for a demo’ s subtree.< / p >
2017-12-02 13:18:34 +01:00
< p > Here’ s a live demo < em > of< / em > the demo:< / p >
2017-11-02 17:50:47 +01:00
< div class = "demo-container" >
< div class = "demo-inner" >
< div class = "demo" id = "js-demo-285170a1c0812ad34ac4b853a052c8bd" > < / div >
2017-12-02 13:18:34 +01:00
< button data-launch = "js-demo-285170a1c0812ad34ac4b853a052c8bd" > Launch < span aria-hidden = "true" > ↗< / span > < / button >
2017-11-02 17:50:47 +01:00
< / div >
< template id = "template-285170a1c0812ad34ac4b853a052c8bd" >
< button aria-pressed = "false" > Toggle Me< / button >
< style >
button {
background: DarkCyan;
color: white;
border: 0;
border-radius: 0.25em;
font-size: 1.5rem;
padding: 0.5em 1em;
border-right: 5px solid #000;
border-bottom: 5px solid #000;
}
[aria-pressed="true"] {
border: 0;
border-top: 5px solid #000;
border-left: 5px solid #000;
}
< / style >
< script >
var toggle = demo.querySelector('[aria-pressed]');
toggle.addEventListener('click', function () {
var pressed = this.getAttribute('aria-pressed') === 'true';
this.setAttribute('aria-pressed', !pressed);
});
< / script >
< / template >
< script >
(function() {
var root = document.getElementById('js-demo-285170a1c0812ad34ac4b853a052c8bd');
var template = document.getElementById('template-285170a1c0812ad34ac4b853a052c8bd');
var demoDiv = document.createElement('div');
demoDiv.innerHTML = template.innerHTML;
var standaloneScript = demoDiv.querySelector('script');
if (standaloneScript) {
standaloneScript.textContent = '(function() { document.getElementsByTagName(\'html\')[0].setAttribute(\'lang\', \'en\'); var demo = document; ' + standaloneScript.textContent + ' })();';
}
if (document.head.attachShadow) {
var templateScript = template.content.querySelector('script');
if (templateScript) {
var wrappedScript = '(function() { var demo = document.getElementById(\'js-demo-285170a1c0812ad34ac4b853a052c8bd\').shadowRoot;' + templateScript.textContent + '})();';
templateScript.textContent = wrappedScript;
}
root.attachShadow({mode: 'open'});
root.shadowRoot.appendChild(document.importNode(template.content, true));
} else {
root.innerHTML = '< p class = "site-error" > < strong style = "font-weight:bold" > Site error:< / strong > A browser supporting Shadow DOM is needed to run encapsulated demos. You can launch the demo in a separate window ↓< / p > ';
}
var launchButton = document.querySelector('[data-launch="js-demo-285170a1c0812ad34ac4b853a052c8bd"]');
launchButton.addEventListener('click', function () {
var standalone = window.open();
standalone.document.body.innerHTML = demoDiv.innerHTML;
var newScript = standalone.document.createElement('script');
var oldScript = standalone.document.querySelector('script');
if (oldScript) {
newScript.textContent = oldScript.textContent;
oldScript.parentNode.removeChild(oldScript);
standalone.document.body.appendChild(newScript);
}
standalone.document.title = 'demo ' + "285170a1c0812ad34ac4b853a052c8bd";
});
})();
< / script >
< / div >
2017-12-02 13:18:34 +01:00
< h2 id = "styling-the-container" > Styling the container< / h2 >
< p > Sometimes your component will be expected to appear in a context where the parent element has a background color and possibly other styles. You can add style to your demo block’ s container element using the < code > style< / code > attribute. It works just like standard inline styling.< / p >
< p > < pre class = "language-html" > < code class = "language-html" data-codeblock-shortcode >
{ {< demo style="background-color: pink; padding: 1rem;">}}
< !-- demo code here -->
{ {< /demo>}}
< / code > < / pre >
< / p >
< h2 id = "launch" > “ Launch” < / h2 >
2017-11-02 17:50:47 +01:00
2017-12-02 13:18:34 +01:00
< p > The “ Launch” button takes the demo code and pushes it to a new browser tab. This serves two purposes:< / p >
2017-11-02 17:50:47 +01:00
< ul >
< li > It provides a fallback for browsers that do not support Shadow DOM encapsulation (a warning message will replace the inline demo).< / li >
< li > It creates an isolated test case for the demo, allowing you to run browser extensions and bookmarklets on the the demo code and < em > just< / em > the demo code.< / li >
< / ul >
2017-12-02 13:18:34 +01:00
< aside aria-label = "note" class = "note" >
< div >
< svg class = "sign" aria-hidden = "true" viewBox = "0 0 41.667306 41.66729" focusable = "false" >
< use xlink:href = "#info" > < / use >
< / svg >
< p > The “ Launch” button is positioned over the styleable demo container. Bear this is mind when styling the container (see the previous section).< / p >
2017-11-02 17:50:47 +01:00
2017-12-02 13:18:34 +01:00
< / div >
< / aside >
2017-11-02 17:50:47 +01:00
2017-12-02 13:18:34 +01:00
< h2 id = "captioned-demos" > Captioned demos< / h2 >
2017-11-02 17:50:47 +01:00
2017-12-02 13:18:34 +01:00
< p > It’ s possible to give your demo a caption using an accessible < code > < figure> < / code > and < code > < figcaption> < / code > structure. All < em > you< / em > need to do is supply a < code > caption< / code > attribute. For example:< / p >
2017-11-02 17:50:47 +01:00
< pre class = "language-html" > < code class = "language-html" data-codeblock-shortcode >
2017-12-02 13:18:34 +01:00
{ {< demo caption="A basic button element">}}
2017-11-02 17:50:47 +01:00
< !-- demo code here -->
{ {< /demo>}}
< / code > < / pre >
2017-12-02 13:18:34 +01:00
< p > Along with the standard < code > figure< / code > shortcodes (described in < a class = "pattern-link" href = "https://thepaciellogroup.github.io/cupper/patterns/media/including-images/" > < svg class = "bookmark" aria-hidden = "true" viewBox = "0 0 40 50" focusable = "false" > < use xlink:href = "#bookmark" > < / use > < / svg > Including images< / a > ), demo figures are numbered automatically according to their order in the page. You can use markdown syntax in the caption text value.< / p >
2017-11-02 17:50:47 +01:00
< / main >
< footer role = "contentinfo" >
< div >
< label for = "themer" >
dark theme: < input type = "checkbox" id = "themer" class = "vh" >
< span aria-hidden = "true" > < / span >
< / label >
< / div >
Powered by < strong > Cupper< / strong > , a < strong > The Paciello Group< / strong > project.< br >
For general enquiries, contact us on info@paciellogroup.com.
< / footer >
< / div >
< / div >
< / div >
< script src = "https://thepaciellogroup.github.io/cupper/js/prism.js" > < / script >
< script src = "https://thepaciellogroup.github.io/cupper/js/dom-scripts.js" > < / script >
< / body >
< / html >