This fork is based on micromark/micromark-extension-mdx-jsx by the original author Titus Wormer.
The purpose of this fork is to provide extended MDX/JSX syntax support for the Astro website build tool. If you're not using Astro, you should probably use the original extension instead of this fork.
The original code always treated colons inside JSX tags as a separator between a primary name and a local name, even if there was whitespace before the colon. Our forked version starts an attribute name instead of a local name if there is whitespace before the colon.
This leads to the following changes:
- The syntax
<input :placeholder="...">
is now treated as aninput
element with an attribute named:placeholder
.- The original code treated this like
<input:placeholder="...">
, resulting in an element namedinput:placeholder
(withplaceholder
being the local name of the element), and a syntax error due to the following unexpected value assignment="..."
.
- The original code treated this like
- The syntax
<input disabled :placeholder="...">
is now treated as aninput
element with two attributes nameddisabled
and:placeholder
.- The original code treated this like
<input disabled:placeholder="...">
, resulting in aninput
element with only one attribute nameddisabled:placeholder
.
- The original code treated this like
As a result, these AlpineJS examples now work as expected:
<input type="text" :placeholder="placeholder">
<input type="text" disabled :placeholder="placeholder">
<div :class="open ? '' : 'hidden'">Test</div>
<div :style="true && { color: 'red' }">Test</div>
The original code did not allow attribute names to start with @
. Our forked version allows this.
As a result, these examples using the AlpineJS shorthand syntax for x-on:
now work as expected:
<button @click="handleClick">Test</button>
The original code did not allow attribute names to contain dots. Our forked version allows this.
As a result, in combination with our change that allows @
to start attribute names, these AlpineJS examples now work as expected:
<button @click.once="console.log('I will only log once')">Test</button>
<input @input.debounce="fetchResults">
<input @input.debounce.500ms="fetchResults">
<div @keyup.escape.window="...">Test</div>
micromark-extension-mdx-jsx's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.