Skip to content
This repository was archived by the owner on Oct 9, 2024. It is now read-only.

Commit 65caa14

Browse files
Convert back to render modifiers (#375)
1 parent 7fb6178 commit 65caa14

File tree

4 files changed

+39
-97
lines changed

4 files changed

+39
-97
lines changed

addon/components/code-inline.hbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<code
22
...attributes
33
class="{{this.languageClass}}"
4-
{{create-ref "codeElement" bucket=this tracked=true}}
4+
{{did-insert this.setPrismCode}}
5+
{{did-update this.setPrismCode this.code @language}}
56
>
67
{{~! ~}}{{this.prismCode}}{{~! ~}}
78
</code>

addon/components/code-inline.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
/* global Prism */
22
import Component from '@glimmer/component';
3+
import { action } from '@ember/object';
34
import { htmlSafe } from '@ember/template';
5+
import { tracked } from '@glimmer/tracking';
46
import { assert } from '@ember/debug';
5-
import { trackedRef } from 'ember-ref-bucket';
67

78
export default class CodeInlineComponent extends Component {
8-
@trackedRef('codeElement') codeElement;
9+
@tracked prismCode = '';
910

1011
get code() {
1112
const code = this.args.code;
13+
1214
assert(
1315
"ember-prism's <CodeBlock/> and <CodeInline/> components require a `code` parameter to be passed in.",
1416
code !== undefined
1517
);
1618
if (Prism?.plugins?.NormalizeWhitespace) {
1719
return Prism.plugins.NormalizeWhitespace.normalize(code);
1820
}
21+
1922
return code;
2023
}
2124

@@ -27,26 +30,23 @@ export default class CodeInlineComponent extends Component {
2730
return `language-${this.language}`;
2831
}
2932

30-
get prismCode() {
31-
let prismCode = '';
32-
33-
if (this.codeElement) {
34-
const code = this.code;
35-
const language = this.language;
36-
const grammar = Prism.languages[language];
37-
38-
if (code && language && grammar) {
39-
prismCode = htmlSafe(Prism.highlight(code, grammar, language));
40-
}
33+
@action
34+
setPrismCode(element) {
35+
const code = this.code;
36+
const language = this.language;
37+
const grammar = Prism.languages[language];
4138

42-
// Force plugin initialization, required for Prism.highlight usage.
43-
// See https://github.com/PrismJS/prism/issues/1234
44-
Prism.hooks.run('complete', {
45-
code,
46-
element: this.codeElement,
47-
});
39+
if (code && language && grammar) {
40+
this.prismCode = htmlSafe(Prism.highlight(code, grammar, language));
41+
} else {
42+
this.prismCode = '';
4843
}
4944

50-
return prismCode;
45+
// Force plugin initialization, required for Prism.highlight usage.
46+
// See https://github.com/PrismJS/prism/issues/1234
47+
Prism.hooks.run('complete', {
48+
code,
49+
element,
50+
});
5151
}
5252
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
"test:ember-compatibility": "ember try:each"
3838
},
3939
"dependencies": {
40+
"@ember/render-modifiers": "^2.0.0",
4041
"ember-auto-import": "^2.1.0",
4142
"ember-cli-babel": "^7.26.6",
4243
"ember-cli-htmlbars": "^5.7.1",
4344
"ember-cli-node-assets": "^0.2.2",
44-
"ember-ref-bucket": "^3.1.0",
4545
"prismjs": "^1.22.0",
4646
"prismjs-glimmer": "^1.1.1"
4747
},

yarn.lock

Lines changed: 16 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
browserslist "^4.16.6"
7777
semver "^6.3.0"
7878

79-
"@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":
79+
"@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":
8080
version "7.15.0"
8181
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz#c9a137a4d137b2d0e2c649acf536d7ba1a76c0f7"
8282
integrity sha512-MdmDXgvTIi4heDVX/e9EFfeGpugqm9fobBVg/iioE8kueXrOHdRDe36FAY7SnE9xXLVeYCoJR/gdrBEIHRC83Q==
@@ -339,7 +339,7 @@
339339
"@babel/helper-plugin-utils" "^7.14.5"
340340
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
341341

342-
"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5", "@babel/plugin-proposal-nullish-coalescing-operator@^7.4.4":
342+
"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
343343
version "7.14.5"
344344
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6"
345345
integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==
@@ -374,7 +374,7 @@
374374
"@babel/helper-plugin-utils" "^7.14.5"
375375
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
376376

377-
"@babel/plugin-proposal-optional-chaining@^7.14.5", "@babel/plugin-proposal-optional-chaining@^7.6.0":
377+
"@babel/plugin-proposal-optional-chaining@^7.14.5":
378378
version "7.14.5"
379379
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603"
380380
integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==
@@ -514,7 +514,7 @@
514514
dependencies:
515515
"@babel/helper-plugin-utils" "^7.14.5"
516516

517-
"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.2.0", "@babel/plugin-syntax-typescript@^7.8.3":
517+
"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.2.0":
518518
version "7.14.5"
519519
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716"
520520
integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==
@@ -799,15 +799,6 @@
799799
"@babel/helper-plugin-utils" "^7.0.0"
800800
"@babel/plugin-syntax-typescript" "^7.2.0"
801801

802-
"@babel/plugin-transform-typescript@~7.8.0":
803-
version "7.8.7"
804-
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda"
805-
integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ==
806-
dependencies:
807-
"@babel/helper-create-class-features-plugin" "^7.8.3"
808-
"@babel/helper-plugin-utils" "^7.8.3"
809-
"@babel/plugin-syntax-typescript" "^7.8.3"
810-
811802
"@babel/plugin-transform-unicode-escapes@^7.14.5":
812803
version "7.14.5"
813804
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b"
@@ -1007,6 +998,15 @@
1007998
mkdirp "^1.0.4"
1008999
silent-error "^1.1.1"
10091000

1001+
"@ember/render-modifiers@^2.0.0":
1002+
version "2.0.0"
1003+
resolved "https://registry.yarnpkg.com/@ember/render-modifiers/-/render-modifiers-2.0.0.tgz#7106928078c6463bc6ee3cbffb6d71dbb8602145"
1004+
integrity sha512-FbvowKEnYx102MaNMrePBC7RCmuf3BaqPKbp6QP7S6oJaDMuLrGblXW4TxOrE93C6II+6D4QNB4WFGuPeQ3ZBg==
1005+
dependencies:
1006+
ember-cli-babel "^7.26.6"
1007+
ember-compatibility-helpers "^1.2.5"
1008+
ember-modifier-manager-polyfill "^1.2.0"
1009+
10101010
"@ember/test-helpers@^2.2.5":
10111011
version "2.5.0"
10121012
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:
47774777
resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771"
47784778
integrity sha1-DXtZVVni+QUKvtgE8djv8bCLx3E=
47794779

4780-
ember-cli-htmlbars@^5.3.1, ember-cli-htmlbars@^5.7.1:
4780+
ember-cli-htmlbars@^5.7.1:
47814781
version "5.7.1"
47824782
resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-5.7.1.tgz#eb5b88c7d9083bc27665fb5447a9b7503b32ce4f"
47834783
integrity sha512-9laCgL4tSy48orNoQgQKEHp93MaqAs9ZOl7or5q+8iyGGJHW6sVXIYrVv5/5O9HfV6Ts8/pW1rSoaeKyLUE+oA==
@@ -4912,26 +4912,6 @@ ember-cli-typescript@^2.0.2:
49124912
stagehand "^1.0.0"
49134913
walk-sync "^1.0.0"
49144914

4915-
ember-cli-typescript@^3.1.3:
4916-
version "3.1.4"
4917-
resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-3.1.4.tgz#21d6ccd670d1f2e34c9cce68c6e32c442f46806b"
4918-
integrity sha512-HJ73kL45OGRmIkPhBNFt31I1SGUvdZND+LCH21+qpq3pPlFpJG8GORyXpP+2ze8PbnITNLzwe5AwUrpyuRswdQ==
4919-
dependencies:
4920-
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.4.4"
4921-
"@babel/plugin-proposal-optional-chaining" "^7.6.0"
4922-
"@babel/plugin-transform-typescript" "~7.8.0"
4923-
ansi-to-html "^0.6.6"
4924-
broccoli-stew "^3.0.0"
4925-
debug "^4.0.0"
4926-
ember-cli-babel-plugin-helpers "^1.0.0"
4927-
execa "^3.0.0"
4928-
fs-extra "^8.0.0"
4929-
resolve "^1.5.0"
4930-
rsvp "^4.8.1"
4931-
semver "^6.3.0"
4932-
stagehand "^1.0.0"
4933-
walk-sync "^2.0.0"
4934-
49354915
ember-cli-version-checker@^2.1.2:
49364916
version "2.2.0"
49374917
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:
50635043
workerpool "^6.0.3"
50645044
yam "^1.0.0"
50655045

5066-
ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1, ember-compatibility-helpers@^1.2.4:
5046+
ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1, ember-compatibility-helpers@^1.2.5:
50675047
version "1.2.5"
50685048
resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.5.tgz#b8363b1d5b8725afa9a4fe2b2986ac28626c6f23"
50695049
integrity sha512-7cddkQQp8Rs2Mqrj0xqZ0uO7eC9tBCKyZNcP2iE1RxQqOGPv8fiPkj1TUeidUB/Qe80lstoVXWMEuqqhW7Yy9A==
@@ -5073,7 +5053,7 @@ ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-co
50735053
fs-extra "^9.1.0"
50745054
semver "^5.4.1"
50755055

5076-
ember-destroyable-polyfill@^2.0.2, ember-destroyable-polyfill@^2.0.3:
5056+
ember-destroyable-polyfill@^2.0.3:
50775057
version "2.0.3"
50785058
resolved "https://registry.yarnpkg.com/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz#1673ed66609a82268ef270a7d917ebd3647f11e1"
50795059
integrity sha512-TovtNqCumzyAiW0/OisSkkVK93xnVF4NRU6+FN0ubpfwEOpRrmM2RqDwXI6YAChCgSHON1cz0DfQStpA1Gjuuw==
@@ -5119,19 +5099,6 @@ ember-modifier-manager-polyfill@^1.2.0:
51195099
ember-cli-version-checker "^2.1.2"
51205100
ember-compatibility-helpers "^1.2.0"
51215101

5122-
ember-modifier@^2.1.1:
5123-
version "2.1.2"
5124-
resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-2.1.2.tgz#62d18faedf972dcd9d34f90d5321fbc943d139b1"
5125-
integrity sha512-3Lsu1fV1sIGa66HOW07RZc6EHISwKt5VA5AUnFss2HX6OTfpxTJ2qvPctt2Yt0XPQXJ4G6BQasr/F35CX7UGJA==
5126-
dependencies:
5127-
ember-cli-babel "^7.22.1"
5128-
ember-cli-normalize-entity-name "^1.0.0"
5129-
ember-cli-string-utils "^1.1.0"
5130-
ember-cli-typescript "^3.1.3"
5131-
ember-compatibility-helpers "^1.2.4"
5132-
ember-destroyable-polyfill "^2.0.2"
5133-
ember-modifier-manager-polyfill "^1.2.0"
5134-
51355102
ember-page-title@^6.2.2:
51365103
version "6.2.2"
51375104
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:
51545121
silent-error "^1.1.1"
51555122
validate-peer-dependencies "^1.2.0"
51565123

5157-
ember-ref-bucket@^3.1.0:
5158-
version "3.1.0"
5159-
resolved "https://registry.yarnpkg.com/ember-ref-bucket/-/ember-ref-bucket-3.1.0.tgz#c3aa3923bdedcf782923bf24e31a17fdd2f68a02"
5160-
integrity sha512-oO+Igh8G1UHcf7gEJdbElz/xJHjTds64DXfd+c189rHuKJ4dYMI2m2BkHPermeyUe6ZNEFwlkVe9lYm2rvmcaw==
5161-
dependencies:
5162-
ember-cli-babel "^7.22.1"
5163-
ember-cli-htmlbars "^5.3.1"
5164-
ember-destroyable-polyfill "^2.0.2"
5165-
ember-modifier "^2.1.1"
5166-
51675124
ember-resolver@^8.0.2:
51685125
version "8.0.3"
51695126
resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-8.0.3.tgz#40f243aa58281bf195c695fe84a6b291e204690a"
@@ -5794,22 +5751,6 @@ execa@^2.0.0:
57945751
signal-exit "^3.0.2"
57955752
strip-final-newline "^2.0.0"
57965753

5797-
execa@^3.0.0:
5798-
version "3.4.0"
5799-
resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
5800-
integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
5801-
dependencies:
5802-
cross-spawn "^7.0.0"
5803-
get-stream "^5.0.0"
5804-
human-signals "^1.1.1"
5805-
is-stream "^2.0.0"
5806-
merge-stream "^2.0.0"
5807-
npm-run-path "^4.0.0"
5808-
onetime "^5.1.0"
5809-
p-finally "^2.0.0"
5810-
signal-exit "^3.0.2"
5811-
strip-final-newline "^2.0.0"
5812-
58135754
execa@^4.0.2, execa@^4.0.3:
58145755
version "4.1.0"
58155756
resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"

0 commit comments

Comments
 (0)