Giter VIP home page Giter VIP logo

Comments (5)

developit avatar developit commented on May 24, 2024 1

HTM doesn't decode HTML Entities because doing so requires one of two things:

  • a huge map of entities, which would be many times larger than HTM itself and would destroy performance (there's one in Babel, and probably 50 in your node_modules right now); or
  • runtime entity decoding via innerHTML, which is extremely slow and only works in the browser.

Since neither of those two options are viable, we just don't support HTML Entities. They're only supported in JSX because doing so made sense in a very different context (in build tools in 2014).

@rozek 's solutions are what I'd recommend, or just use the character you want as a literal. If you want an emoji, paste the emoji into your editor and make sure your bundles are served with a utf-8 mime encoding - that's better than hand writing surrogate pairs πŸ§β€β™‚οΈ.

from htm.

tim-lynn-clark avatar tim-lynn-clark commented on May 24, 2024

Similar issue with all Unicode HTML codes like 😀 (the smiley emoji). The htm library does not seem to handle HTML codes correctly.

I tried implementing the example below using the htm library instead of JSX, and it prints the code instead of the character.

https://codesandbox.io/s/8w7058yp9?from-embed=&file=/src/index.js

@openHawkes have you heard anything back or have you found a solution?

from htm.

openHawkes avatar openHawkes commented on May 24, 2024

@tim-lynn-clark I have not been contacted or found a solution past sort of hackily inserting whitespace in a somewhat odd place in my template instead of using  . Fortunately or unfortunately, that's allowed me to move on for the time being instead of cracking open the code of HTM [which for the most part I've really enjoyed using!].

from htm.

rozek avatar rozek commented on May 24, 2024

Just a small note (in case that somebody likes it):

as long as HTML entities will not be rendered properly, I'll use alternatives such as ${'\xA0'} (for non-breaking spaces), ${'\x--'} for arbitrary ASCII codes or ${'\u----'} for arbitrary Unicode code points instead.

If you prefer s.th. more human-readable, you could define

  const nbsp = '\xA0'
  return html`${nbsp}`

This approach can also be used for decimal character codes (in case that you don't want to convert them into hexadecimal):

  const SmileyEmoji = String.fromCodePoint(128512)
  return html`${SmileyEmoji}`

(the character code was taken from a previous message in this issue, it does not show any emoji on my machine...)

from htm.

rozek avatar rozek commented on May 24, 2024

Thank you for clarifying this!

Wouldn't you like to add this constraint to the docs? This would prevent others to run into the same problem - and you could close this issue afterwards...

from htm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.