diff --git a/addon/components/code-inline.hbs b/addon/components/code-inline.hbs
index cbbc36ad..457e38bf 100644
--- a/addon/components/code-inline.hbs
+++ b/addon/components/code-inline.hbs
@@ -1,7 +1,8 @@
{{~! ~}}{{this.prismCode}}{{~! ~}}
\ No newline at end of file
diff --git a/addon/components/code-inline.js b/addon/components/code-inline.js
index 2a382df1..08eadd3c 100644
--- a/addon/components/code-inline.js
+++ b/addon/components/code-inline.js
@@ -1,14 +1,16 @@
/* global Prism */
import Component from '@glimmer/component';
+import { action } from '@ember/object';
import { htmlSafe } from '@ember/template';
+import { tracked } from '@glimmer/tracking';
import { assert } from '@ember/debug';
-import { trackedRef } from 'ember-ref-bucket';
export default class CodeInlineComponent extends Component {
- @trackedRef('codeElement') codeElement;
+ @tracked prismCode = '';
get code() {
const code = this.args.code;
+
assert(
"ember-prism's and components require a `code` parameter to be passed in.",
code !== undefined
@@ -16,6 +18,7 @@ export default class CodeInlineComponent extends Component {
if (Prism?.plugins?.NormalizeWhitespace) {
return Prism.plugins.NormalizeWhitespace.normalize(code);
}
+
return code;
}
@@ -27,26 +30,23 @@ export default class CodeInlineComponent extends Component {
return `language-${this.language}`;
}
- get prismCode() {
- let prismCode = '';
-
- if (this.codeElement) {
- const code = this.code;
- const language = this.language;
- const grammar = Prism.languages[language];
-
- if (code && language && grammar) {
- prismCode = htmlSafe(Prism.highlight(code, grammar, language));
- }
+ @action
+ setPrismCode(element) {
+ const code = this.code;
+ const language = this.language;
+ const grammar = Prism.languages[language];
- // Force plugin initialization, required for Prism.highlight usage.
- // See https://github.com/PrismJS/prism/issues/1234
- Prism.hooks.run('complete', {
- code,
- element: this.codeElement,
- });
+ if (code && language && grammar) {
+ this.prismCode = htmlSafe(Prism.highlight(code, grammar, language));
+ } else {
+ this.prismCode = '';
}
- return prismCode;
+ // Force plugin initialization, required for Prism.highlight usage.
+ // See https://github.com/PrismJS/prism/issues/1234
+ Prism.hooks.run('complete', {
+ code,
+ element,
+ });
}
}
diff --git a/package.json b/package.json
index 441fef05..8198e488 100644
--- a/package.json
+++ b/package.json
@@ -37,11 +37,11 @@
"test:ember-compatibility": "ember try:each"
},
"dependencies": {
+ "@ember/render-modifiers": "^2.0.0",
"ember-auto-import": "^2.1.0",
"ember-cli-babel": "^7.26.6",
"ember-cli-htmlbars": "^5.7.1",
"ember-cli-node-assets": "^0.2.2",
- "ember-ref-bucket": "^3.1.0",
"prismjs": "^1.22.0",
"prismjs-glimmer": "^1.1.1"
},
diff --git a/yarn.lock b/yarn.lock
index 962ee3fa..3716215e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -76,7 +76,7 @@
browserslist "^4.16.6"
semver "^6.3.0"
-"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.0", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3":
+"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.0", "@babel/helper-create-class-features-plugin@^7.5.5":
version "7.15.0"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz#c9a137a4d137b2d0e2c649acf536d7ba1a76c0f7"
integrity sha512-MdmDXgvTIi4heDVX/e9EFfeGpugqm9fobBVg/iioE8kueXrOHdRDe36FAY7SnE9xXLVeYCoJR/gdrBEIHRC83Q==
@@ -339,7 +339,7 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5", "@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4":
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6"
integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==
@@ -374,7 +374,7 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-proposal-optional-chaining@^7.14.5", "@babel/plugin-proposal-optional-chaining@^7.6.0":
+"@babel/plugin-proposal-optional-chaining@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603"
integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==
@@ -514,7 +514,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.2.0", "@babel/plugin-syntax-typescript@^7.8.3":
+"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.2.0":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716"
integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==
@@ -799,15 +799,6 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-typescript" "^7.2.0"
-"@babel/plugin-transform-typescript@~7.8.0":
- version "7.8.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda"
- integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.8.3"
- "@babel/helper-plugin-utils" "^7.8.3"
- "@babel/plugin-syntax-typescript" "^7.8.3"
-
"@babel/plugin-transform-unicode-escapes@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b"
@@ -1007,6 +998,15 @@
mkdirp "^1.0.4"
silent-error "^1.1.1"
+"@ember/render-modifiers@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.0.tgz#7106928078c6463bc6ee3cbffb6d71dbb8602145"
+ integrity sha512-FbvowKEnYx102MaNMrePBC7RCmuf3BaqPKbp6QP7S6oJaDMuLrGblXW4TxOrE93C6II+6D4QNB4WFGuPeQ3ZBg==
+ dependencies:
+ ember-cli-babel "^7.26.6"
+ ember-compatibility-helpers "^1.2.5"
+ ember-modifier-manager-polyfill "^1.2.0"
+
"@ember/test-helpers@^2.2.5":
version "2.5.0"
resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-2.5.0.tgz#1503e4fdf12451d591e41f69d0b2c1db8a431017"
@@ -4777,7 +4777,7 @@ ember-cli-get-component-path-option@^1.0.0:
resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771"
integrity sha1-DXtZVVni+QUKvtgE8djv8bCLx3E=
-ember-cli-htmlbars@^5.3.1, ember-cli-htmlbars@^5.7.1:
+ember-cli-htmlbars@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.1.tgz#eb5b88c7d9083bc27665fb5447a9b7503b32ce4f"
integrity sha512-9laCgL4tSy48orNoQgQKEHp93MaqAs9ZOl7or5q+8iyGGJHW6sVXIYrVv5/5O9HfV6Ts8/pW1rSoaeKyLUE+oA==
@@ -4912,26 +4912,6 @@ ember-cli-typescript@^2.0.2:
stagehand "^1.0.0"
walk-sync "^1.0.0"
-ember-cli-typescript@^3.1.3:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-3.1.4.tgz#21d6ccd670d1f2e34c9cce68c6e32c442f46806b"
- integrity sha512-HJ73kL45OGRmIkPhBNFt31I1SGUvdZND+LCH21+qpq3pPlFpJG8GORyXpP+2ze8PbnITNLzwe5AwUrpyuRswdQ==
- dependencies:
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.4.4"
- "@babel/plugin-proposal-optional-chaining" "^7.6.0"
- "@babel/plugin-transform-typescript" "~7.8.0"
- ansi-to-html "^0.6.6"
- broccoli-stew "^3.0.0"
- debug "^4.0.0"
- ember-cli-babel-plugin-helpers "^1.0.0"
- execa "^3.0.0"
- fs-extra "^8.0.0"
- resolve "^1.5.0"
- rsvp "^4.8.1"
- semver "^6.3.0"
- stagehand "^1.0.0"
- walk-sync "^2.0.0"
-
ember-cli-version-checker@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz#47771b731fe0962705e27c8199a9e3825709f3b3"
@@ -5063,7 +5043,7 @@ ember-cli@~3.27.0:
workerpool "^6.0.3"
yam "^1.0.0"
-ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1, ember-compatibility-helpers@^1.2.4:
+ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1, ember-compatibility-helpers@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.5.tgz#b8363b1d5b8725afa9a4fe2b2986ac28626c6f23"
integrity sha512-7cddkQQp8Rs2Mqrj0xqZ0uO7eC9tBCKyZNcP2iE1RxQqOGPv8fiPkj1TUeidUB/Qe80lstoVXWMEuqqhW7Yy9A==
@@ -5073,7 +5053,7 @@ ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-co
fs-extra "^9.1.0"
semver "^5.4.1"
-ember-destroyable-polyfill@^2.0.2, ember-destroyable-polyfill@^2.0.3:
+ember-destroyable-polyfill@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz#1673ed66609a82268ef270a7d917ebd3647f11e1"
integrity sha512-TovtNqCumzyAiW0/OisSkkVK93xnVF4NRU6+FN0ubpfwEOpRrmM2RqDwXI6YAChCgSHON1cz0DfQStpA1Gjuuw==
@@ -5119,19 +5099,6 @@ ember-modifier-manager-polyfill@^1.2.0:
ember-cli-version-checker "^2.1.2"
ember-compatibility-helpers "^1.2.0"
-ember-modifier@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-2.1.2.tgz#62d18faedf972dcd9d34f90d5321fbc943d139b1"
- integrity sha512-3Lsu1fV1sIGa66HOW07RZc6EHISwKt5VA5AUnFss2HX6OTfpxTJ2qvPctt2Yt0XPQXJ4G6BQasr/F35CX7UGJA==
- dependencies:
- ember-cli-babel "^7.22.1"
- ember-cli-normalize-entity-name "^1.0.0"
- ember-cli-string-utils "^1.1.0"
- ember-cli-typescript "^3.1.3"
- ember-compatibility-helpers "^1.2.4"
- ember-destroyable-polyfill "^2.0.2"
- ember-modifier-manager-polyfill "^1.2.0"
-
ember-page-title@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/ember-page-title/-/ember-page-title-6.2.2.tgz#980838c44e96cba1d00f42435d707936af627324"
@@ -5154,16 +5121,6 @@ ember-qunit@^5.1.4:
silent-error "^1.1.1"
validate-peer-dependencies "^1.2.0"
-ember-ref-bucket@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/ember-ref-bucket/-/ember-ref-bucket-3.1.0.tgz#c3aa3923bdedcf782923bf24e31a17fdd2f68a02"
- integrity sha512-oO+Igh8G1UHcf7gEJdbElz/xJHjTds64DXfd+c189rHuKJ4dYMI2m2BkHPermeyUe6ZNEFwlkVe9lYm2rvmcaw==
- dependencies:
- ember-cli-babel "^7.22.1"
- ember-cli-htmlbars "^5.3.1"
- ember-destroyable-polyfill "^2.0.2"
- ember-modifier "^2.1.1"
-
ember-resolver@^8.0.2:
version "8.0.3"
resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-8.0.3.tgz#40f243aa58281bf195c695fe84a6b291e204690a"
@@ -5794,22 +5751,6 @@ execa@^2.0.0:
signal-exit "^3.0.2"
strip-final-newline "^2.0.0"
-execa@^3.0.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
- integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
- dependencies:
- cross-spawn "^7.0.0"
- get-stream "^5.0.0"
- human-signals "^1.1.1"
- is-stream "^2.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^4.0.0"
- onetime "^5.1.0"
- p-finally "^2.0.0"
- signal-exit "^3.0.2"
- strip-final-newline "^2.0.0"
-
execa@^4.0.2, execa@^4.0.3:
version "4.1.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"