|
1622 | 1622 | addEventListener('popstate', () => loadFromHash()); |
1623 | 1623 | })(); |
1624 | 1624 |
|
1625 | | -const exampleJS = `// Generated by CoffeeScript 2.5.1 |
1626 | | -(function() { |
1627 | | - // Assignment: |
1628 | | - var cubes, list, math, num, number, opposite, race, square; |
1629 | | -
|
1630 | | - number = 42; |
1631 | | -
|
1632 | | - opposite = true; |
1633 | | -
|
1634 | | - if (opposite) { |
1635 | | - // Conditions: |
1636 | | - number = -42; |
| 1625 | +const exampleJS = `// index.tsx |
| 1626 | +import { h as r, Fragment as s, render as c } from "preact"; |
| 1627 | +
|
| 1628 | +// counter.tsx |
| 1629 | +import { h as t, Component as a } from "preact"; |
| 1630 | +import { useState as l } from "preact/hooks"; |
| 1631 | +var o = class extends a { |
| 1632 | + constructor(e) { |
| 1633 | + super(e); |
| 1634 | + this.state = { value: 0 }; |
| 1635 | + this.increment = () => this.setState({ value: this.state.value + 1 }); |
| 1636 | + this.decrement = () => this.setState({ value: this.state.value - 1 }); |
| 1637 | + this.state.value = e.initialValue; |
1637 | 1638 | } |
1638 | | -
|
1639 | | - // Functions: |
1640 | | - square = function(x) { |
1641 | | - return x * x; |
1642 | | - }; |
1643 | | -
|
1644 | | - // Arrays: |
1645 | | - list = [1, 2, 3, 4, 5]; |
1646 | | -
|
1647 | | - // Objects: |
1648 | | - math = { |
1649 | | - root: Math.sqrt, |
1650 | | - square: square, |
1651 | | - cube: function(x) { |
1652 | | - return x * square(x); |
1653 | | - } |
1654 | | - }; |
1655 | | -
|
1656 | | - // Splats: |
1657 | | - race = function(winner, ...runners) { |
1658 | | - return print(winner, runners); |
1659 | | - }; |
1660 | | -
|
1661 | | - if (typeof elvis !== \"undefined\" && elvis !== null) { |
1662 | | - // Existence: |
1663 | | - alert(\"I knew it!\"); |
| 1639 | + render() { |
| 1640 | + return t("div", { |
| 1641 | + class: "counter" |
| 1642 | + }, t("h1", null, this.props.label), t("p", null, t("button", { |
| 1643 | + onClick: this.decrement |
| 1644 | + }, "-"), " ", this.state.value, " ", t("button", { |
| 1645 | + onClick: this.increment |
| 1646 | + }, "+"))); |
1664 | 1647 | } |
1665 | | -
|
1666 | | - // Array comprehensions: |
1667 | | - cubes = (function() { |
1668 | | - var i, len, results; |
1669 | | - results = []; |
1670 | | - for (i = 0, len = list.length; i < len; i++) { |
1671 | | - num = list[i]; |
1672 | | - results.push(math.cube(num)); |
1673 | | - } |
1674 | | - return results; |
1675 | | - })(); |
1676 | | -
|
1677 | | -}).call(this); |
1678 | | -
|
1679 | | -//# sourceMappingURL=original.js.map |
| 1648 | +}, i = (n) => { |
| 1649 | + let [e, u] = l(n.initialValue); |
| 1650 | + return t("div", { |
| 1651 | + class: "counter" |
| 1652 | + }, t("h1", null, n.label), t("p", null, t("button", { |
| 1653 | + onClick: () => u(e - 1) |
| 1654 | + }, "-"), " ", e, " ", t("button", { |
| 1655 | + onClick: () => u(e + 1) |
| 1656 | + }, "+"))); |
| 1657 | +}; |
| 1658 | +
|
| 1659 | +// index.tsx |
| 1660 | +c(r(s, null, r(o, { |
| 1661 | + label: "Counter 1", |
| 1662 | + initialValue: 100 |
| 1663 | +}), r(i, { |
| 1664 | + label: "Counter 2", |
| 1665 | + initialValue: 200 |
| 1666 | +})), document.getElementById("root")); |
| 1667 | +//# sourceMappingURL=example.js.map |
1680 | 1668 | `; |
1681 | 1669 |
|
1682 | 1670 | const exampleMap = `{ |
1683 | 1671 | "version": 3, |
1684 | | - "file": "original.js", |
1685 | | - "sourceRoot": "", |
1686 | | - "sources": [ |
1687 | | - "original.coffee" |
1688 | | - ], |
1689 | | - "names": [], |
1690 | | - "mappings": ";AAAa;EAAA;AAAA,MAAA,KAAA,EAAA,IAAA,EAAA,IAAA,EAAA,GAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA;;EACb,MAAA,GAAW;;EACX,QAAA,GAAW;;EAGX,IAAgB,QAAhB;;IAAA,MAAA,GAAS,CAAC,GAAV;GALa;;;EAQb,MAAA,GAAS,QAAA,CAAC,CAAD,CAAA;WAAO,CAAA,GAAI;EAAX,EARI;;;EAWb,IAAA,GAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAXM;;;EAcb,IAAA,GACE;IAAA,IAAA,EAAQ,IAAI,CAAC,IAAb;IACA,MAAA,EAAQ,MADR;IAEA,IAAA,EAAQ,QAAA,CAAC,CAAD,CAAA;aAAO,CAAA,GAAI,MAAA,CAAO,CAAP;IAAX;EAFR,EAfW;;;EAoBb,IAAA,GAAO,QAAA,CAAC,MAAD,EAAA,GAAS,OAAT,CAAA;WACL,KAAA,CAAM,MAAN,EAAc,OAAd;EADK;;EAIP,IAAsB,8CAAtB;;IAAA,KAAA,CAAM,YAAN,EAAA;GAxBa;;;EA2Bb,KAAA;;AAAS;IAAA,KAAA,sCAAA;;mBAAA,IAAI,CAAC,IAAL,CAAU,GAAV;IAAA,CAAA;;;AA3BI", |
1691 | | - "sourcesContent": [ |
1692 | | - "# Assignment:\\nnumber = 42\\nopposite = true\\n\\n# Conditions:\\nnumber = -42 if opposite\\n\\n# Functions:\\nsquare = (x) -> x * x\\n\\n# Arrays:\\nlist = [1, 2, 3, 4, 5]\\n\\n# Objects:\\nmath =\\n root: Math.sqrt\\n square: square\\n cube: (x) -> x * square x\\n\\n# Splats:\\nrace = (winner, runners...) ->\\n print winner, runners\\n\\n# Existence:\\nalert \\"I knew it!\\" if elvis?\\n\\n# Array comprehensions:\\ncubes = (math.cube num for num in list)\\n" |
1693 | | - ] |
1694 | | -}`; |
| 1672 | + "sources": ["index.tsx", "counter.tsx"], |
| 1673 | + "sourcesContent": ["import { h, Fragment, render } from 'preact'\\nimport { CounterClass, CounterFunction } from './counter'\\n\\nrender(\\n <>\\n <CounterClass label=\\"Counter 1\\" initialValue={100} />\\n <CounterFunction label=\\"Counter 2\\" initialValue={200} />\\n </>,\\n document.getElementById('root')!,\\n)\\n", "import { h, Component } from 'preact'\\nimport { useState } from 'preact/hooks'\\n\\ninterface CounterProps {\\n label: string\\n initialValue: number\\n}\\n\\ninterface CounterState {\\n value: number\\n}\\n\\nexport class CounterClass extends Component<CounterProps, CounterState> {\\n state: CounterState = { value: 0 }\\n\\n constructor(props: CounterProps) {\\n super(props)\\n this.state.value = props.initialValue\\n }\\n\\n increment = () => this.setState({ value: this.state.value + 1 })\\n decrement = () => this.setState({ value: this.state.value - 1 })\\n\\n render() {\\n return <div class=\\"counter\\">\\n <h1>{this.props.label}</h1>\\n <p>\\n <button onClick={this.decrement}>-</button>\\n {' '}\\n {this.state.value}\\n {' '}\\n <button onClick={this.increment}>+</button>\\n </p>\\n </div>\\n }\\n}\\n\\nexport let CounterFunction = (props: CounterProps) => {\\n let [value, setValue] = useState(props.initialValue)\\n return <div class=\\"counter\\">\\n <h1>{props.label}</h1>\\n <p>\\n <button onClick={() => setValue(value - 1)}>-</button>\\n {' '}\\n {value}\\n {' '}\\n <button onClick={() => setValue(value + 1)}>+</button>\\n </p>\\n </div>\\n}\\n"], |
| 1674 | + "mappings": ";AAAA;;;ACAA;AACA;AAWO,sBAA2B,EAAsC;AAAA,EAGtE,YAAY,GAAqB;AAC/B,UAAM;AAHR,iBAAsB,EAAE,OAAO;AAO/B,qBAAY,MAAM,KAAK,SAAS,EAAE,OAAO,KAAK,MAAM,QAAQ;AAC5D,qBAAY,MAAM,KAAK,SAAS,EAAE,OAAO,KAAK,MAAM,QAAQ;AAJ1D,SAAK,MAAM,QAAQ,EAAM;AAAA;AAAA,EAM3B,SAAS;AACP,WAAO,EAAC,OAAD;AAAA,MAAK,OAAM;AAAA,OAChB,EAAC,MAAD,MAAK,KAAK,MAAM,QAChB,EAAC,KAAD,MACE,EAAC,UAAD;AAAA,MAAQ,SAAS,KAAK;AAAA,OAAW,MAChC,KACA,KAAK,MAAM,OACX,KACD,EAAC,UAAD;AAAA,MAAQ,SAAS,KAAK;AAAA,OAAW;AAAA;AAAA,GAM9B,IAAkB,CAAC,MAAwB;AACpD,MAAI,CAAC,GAAO,KAAY,EAAS,EAAM;AACvC,SAAO,EAAC,OAAD;AAAA,IAAK,OAAM;AAAA,KAChB,EAAC,MAAD,MAAK,EAAM,QACX,EAAC,KAAD,MACE,EAAC,UAAD;AAAA,IAAQ,SAAS,MAAM,EAAS,IAAQ;AAAA,KAAI,MAC3C,KACA,GACA,KACD,EAAC,UAAD;AAAA,IAAQ,SAAS,MAAM,EAAS,IAAQ;AAAA,KAAI;AAAA;;;AD3ClD,EACE,WACE,EAAC,GAAD;AAAA,EAAc,OAAM;AAAA,EAAY,cAAc;AAAA,IAC9C,EAAC,GAAD;AAAA,EAAiB,OAAM;AAAA,EAAY,cAAc;AAAA,KAEnD,SAAS,eAAe;", |
| 1675 | + "names": [] |
| 1676 | +} |
| 1677 | +`; |
0 commit comments