diff --git a/addon/components/on-this-page.hbs b/addon/components/on-this-page.hbs
index 5f5883c8..2d2adff4 100644
--- a/addon/components/on-this-page.hbs
+++ b/addon/components/on-this-page.hbs
@@ -1,5 +1,5 @@
{{#if @toc}}
-
+
diff --git a/addon/modifiers/highlight-active-title.js b/addon/modifiers/highlight-active-title.js
new file mode 100644
index 00000000..34ac4fe4
--- /dev/null
+++ b/addon/modifiers/highlight-active-title.js
@@ -0,0 +1,29 @@
+import { modifier } from 'ember-modifier';
+
+export default modifier(function highlightActiveTitle(element, [toc]) {
+ const observer = new IntersectionObserver((tocSections) => {
+ tocSections.forEach((tocSection) => {
+ const tocId = tocSection.target.getAttribute('aria-labelledby');
+ const tocHeader = element.querySelector(`a[href="#${tocId}"]`);
+ if (tocSection.intersectionRatio > 0) {
+ tocHeader?.parentElement.classList.add('in-viewport');
+ } else {
+ tocHeader?.parentElement.classList.remove('in-viewport');
+ }
+ });
+ });
+
+ // Track all content sections by id
+ toc?.forEach((tocItem) => {
+ const tocSection = document.querySelector(
+ `section[aria-labelledby="${tocItem.id}"]`
+ );
+ if (tocSection) {
+ observer.observe(tocSection);
+ }
+ });
+
+ return () => {
+ observer.disconnect();
+ };
+});
diff --git a/addon/styles/on-this-page.css b/addon/styles/on-this-page.css
index b12c8363..cdc36b7a 100644
--- a/addon/styles/on-this-page.css
+++ b/addon/styles/on-this-page.css
@@ -25,6 +25,7 @@
}
main .on-this-page-wrapper a {
+ position: relative;
text-decoration: none;
color: var(--color-gray-600);
background: none;
@@ -35,6 +36,28 @@ main .on-this-page-wrapper a {
padding-left: var(--spacing-2);
}
+main .on-this-page-wrapper .in-viewport a::before {
+ position: absolute;
+ top: 0;
+ left: -2px;
+ bottom: 0;
+ width: 4px;
+ content: '';
+ background-color: var(--color-brand);
+}
+
+main .on-this-page-wrapper .in-viewport ~ .in-viewport a::before {
+ content: unset;
+}
+
+main .on-this-page-wrapper .in-viewport a {
+ color: var(--color-gray-800);
+}
+
+main .on-this-page-wrapper .in-viewport ~ .in-viewport a {
+ color: var(--color-gray-600);
+}
+
main .on-this-page-wrapper a:hover {
color: var(--color-gray-800);
}
diff --git a/app/modifiers/highlight-active-title.js b/app/modifiers/highlight-active-title.js
new file mode 100644
index 00000000..5c401933
--- /dev/null
+++ b/app/modifiers/highlight-active-title.js
@@ -0,0 +1 @@
+export { default } from 'guidemaker-ember-template/modifiers/highlight-active-title';
diff --git a/package-lock.json b/package-lock.json
index aae9ea2d..a768be5b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,6 +20,7 @@
"ember-concurrency": "^2.0.1",
"ember-get-config": "^2.1.1",
"ember-href-to": "^5.0.0",
+ "ember-modifier": "^4.1.0",
"ember-power-select": "^6.0.0",
"ember-showdown-shiki": "^1.0.3",
"ember-styleguide": "^8.3.0",
@@ -14919,6 +14920,41 @@
"node": "10.* || >= 12.*"
}
},
+ "node_modules/ember-basic-dropdown/node_modules/ember-modifier": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-3.2.7.tgz",
+ "integrity": "sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==",
+ "dependencies": {
+ "ember-cli-babel": "^7.26.6",
+ "ember-cli-normalize-entity-name": "^1.0.0",
+ "ember-cli-string-utils": "^1.1.0",
+ "ember-cli-typescript": "^5.0.0",
+ "ember-compatibility-helpers": "^1.2.5"
+ },
+ "engines": {
+ "node": "12.* || >= 14"
+ }
+ },
+ "node_modules/ember-basic-dropdown/node_modules/ember-modifier/node_modules/ember-cli-typescript": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-5.2.1.tgz",
+ "integrity": "sha512-qqp5TAIuPHxHiGXJKL+78Euyhy0zSKQMovPh8sJpN/ZBYx0H90pONufHR3anaMcp1snVfx4B+mb9+7ijOik8ZA==",
+ "dependencies": {
+ "ansi-to-html": "^0.6.15",
+ "broccoli-stew": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^4.0.0",
+ "fs-extra": "^9.0.1",
+ "resolve": "^1.5.0",
+ "rsvp": "^4.8.1",
+ "semver": "^7.3.2",
+ "stagehand": "^1.0.0",
+ "walk-sync": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 12.*"
+ }
+ },
"node_modules/ember-basic-dropdown/node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -20655,18 +20691,21 @@
}
},
"node_modules/ember-modifier": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-3.2.7.tgz",
- "integrity": "sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-4.1.0.tgz",
+ "integrity": "sha512-YFCNpEYj6jdyy3EjslRb2ehNiDvaOrXTilR9+ngq+iUqSHYto2zKV0rleiA1XJQ27ELM1q8RihT29U6Lq5EyqQ==",
"dependencies": {
- "ember-cli-babel": "^7.26.6",
+ "@embroider/addon-shim": "^1.8.4",
"ember-cli-normalize-entity-name": "^1.0.0",
- "ember-cli-string-utils": "^1.1.0",
- "ember-cli-typescript": "^5.0.0",
- "ember-compatibility-helpers": "^1.2.5"
+ "ember-cli-string-utils": "^1.1.0"
},
- "engines": {
- "node": "12.* || >= 14"
+ "peerDependencies": {
+ "ember-source": "*"
+ },
+ "peerDependenciesMeta": {
+ "ember-source": {
+ "optional": true
+ }
}
},
"node_modules/ember-modifier-manager-polyfill": {
@@ -20682,128 +20721,6 @@
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/ember-modifier/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/ember-modifier/node_modules/ember-cli-typescript": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-5.1.0.tgz",
- "integrity": "sha512-wEZfJPkjqFEZAxOYkiXsDrJ1HY75e/6FoGhQFg8oNFJeGYpIS/3W0tgyl1aRkSEEN1NRlWocDubJ4aZikT+RTA==",
- "dependencies": {
- "ansi-to-html": "^0.6.15",
- "broccoli-stew": "^3.0.0",
- "debug": "^4.0.0",
- "execa": "^4.0.0",
- "fs-extra": "^9.0.1",
- "resolve": "^1.5.0",
- "rsvp": "^4.8.1",
- "semver": "^7.3.2",
- "stagehand": "^1.0.0",
- "walk-sync": "^2.2.0"
- },
- "engines": {
- "node": ">= 12.*"
- }
- },
- "node_modules/ember-modifier/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ember-modifier/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/ember-modifier/node_modules/matcher-collection": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
- "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
- "dependencies": {
- "@types/minimatch": "^3.0.3",
- "minimatch": "^3.0.2"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/ember-modifier/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/ember-modifier/node_modules/rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
- "engines": {
- "node": "6.* || >= 7.*"
- }
- },
- "node_modules/ember-modifier/node_modules/semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ember-modifier/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/ember-modifier/node_modules/walk-sync": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
- "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
- "dependencies": {
- "@types/minimatch": "^3.0.3",
- "ensure-posix-path": "^1.1.0",
- "matcher-collection": "^2.0.0",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": "8.* || >= 10.*"
- }
- },
"node_modules/ember-named-blocks-polyfill": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/ember-named-blocks-polyfill/-/ember-named-blocks-polyfill-0.2.5.tgz",
@@ -22219,6 +22136,143 @@
"node": "12.* || 14.* || >= 16"
}
},
+ "node_modules/ember-style-modifier/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/ember-cli-typescript": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-5.2.1.tgz",
+ "integrity": "sha512-qqp5TAIuPHxHiGXJKL+78Euyhy0zSKQMovPh8sJpN/ZBYx0H90pONufHR3anaMcp1snVfx4B+mb9+7ijOik8ZA==",
+ "dependencies": {
+ "ansi-to-html": "^0.6.15",
+ "broccoli-stew": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^4.0.0",
+ "fs-extra": "^9.0.1",
+ "resolve": "^1.5.0",
+ "rsvp": "^4.8.1",
+ "semver": "^7.3.2",
+ "stagehand": "^1.0.0",
+ "walk-sync": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 12.*"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/ember-modifier": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-3.2.7.tgz",
+ "integrity": "sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==",
+ "dependencies": {
+ "ember-cli-babel": "^7.26.6",
+ "ember-cli-normalize-entity-name": "^1.0.0",
+ "ember-cli-string-utils": "^1.1.0",
+ "ember-cli-typescript": "^5.0.0",
+ "ember-compatibility-helpers": "^1.2.5"
+ },
+ "engines": {
+ "node": "12.* || >= 14"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/matcher-collection": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+ "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+ "dependencies": {
+ "@types/minimatch": "^3.0.3",
+ "minimatch": "^3.0.2"
+ },
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/ember-style-modifier/node_modules/rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+ "engines": {
+ "node": "6.* || >= 7.*"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/ember-style-modifier/node_modules/walk-sync": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+ "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+ "dependencies": {
+ "@types/minimatch": "^3.0.3",
+ "ensure-posix-path": "^1.1.0",
+ "matcher-collection": "^2.0.0",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": "8.* || >= 10.*"
+ }
+ },
"node_modules/ember-styleguide": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ember-styleguide/-/ember-styleguide-8.3.0.tgz",
@@ -50155,6 +50209,37 @@
"silent-error": "^1.1.1"
}
},
+ "ember-modifier": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-3.2.7.tgz",
+ "integrity": "sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==",
+ "requires": {
+ "ember-cli-babel": "^7.26.6",
+ "ember-cli-normalize-entity-name": "^1.0.0",
+ "ember-cli-string-utils": "^1.1.0",
+ "ember-cli-typescript": "^5.0.0",
+ "ember-compatibility-helpers": "^1.2.5"
+ },
+ "dependencies": {
+ "ember-cli-typescript": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-5.2.1.tgz",
+ "integrity": "sha512-qqp5TAIuPHxHiGXJKL+78Euyhy0zSKQMovPh8sJpN/ZBYx0H90pONufHR3anaMcp1snVfx4B+mb9+7ijOik8ZA==",
+ "requires": {
+ "ansi-to-html": "^0.6.15",
+ "broccoli-stew": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^4.0.0",
+ "fs-extra": "^9.0.1",
+ "resolve": "^1.5.0",
+ "rsvp": "^4.8.1",
+ "semver": "^7.3.2",
+ "stagehand": "^1.0.0",
+ "walk-sync": "^2.2.0"
+ }
+ }
+ }
+ },
"find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -54657,105 +54742,13 @@
}
},
"ember-modifier": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-3.2.7.tgz",
- "integrity": "sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-4.1.0.tgz",
+ "integrity": "sha512-YFCNpEYj6jdyy3EjslRb2ehNiDvaOrXTilR9+ngq+iUqSHYto2zKV0rleiA1XJQ27ELM1q8RihT29U6Lq5EyqQ==",
"requires": {
- "ember-cli-babel": "^7.26.6",
+ "@embroider/addon-shim": "^1.8.4",
"ember-cli-normalize-entity-name": "^1.0.0",
- "ember-cli-string-utils": "^1.1.0",
- "ember-cli-typescript": "^5.0.0",
- "ember-compatibility-helpers": "^1.2.5"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ember-cli-typescript": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-5.1.0.tgz",
- "integrity": "sha512-wEZfJPkjqFEZAxOYkiXsDrJ1HY75e/6FoGhQFg8oNFJeGYpIS/3W0tgyl1aRkSEEN1NRlWocDubJ4aZikT+RTA==",
- "requires": {
- "ansi-to-html": "^0.6.15",
- "broccoli-stew": "^3.0.0",
- "debug": "^4.0.0",
- "execa": "^4.0.0",
- "fs-extra": "^9.0.1",
- "resolve": "^1.5.0",
- "rsvp": "^4.8.1",
- "semver": "^7.3.2",
- "stagehand": "^1.0.0",
- "walk-sync": "^2.2.0"
- }
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "matcher-collection": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
- "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
- "requires": {
- "@types/minimatch": "^3.0.3",
- "minimatch": "^3.0.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "rsvp": {
- "version": "4.8.5",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
- "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="
- },
- "semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- },
- "walk-sync": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
- "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
- "requires": {
- "@types/minimatch": "^3.0.3",
- "ensure-posix-path": "^1.1.0",
- "matcher-collection": "^2.0.0",
- "minimatch": "^3.0.4"
- }
- }
+ "ember-cli-string-utils": "^1.1.0"
}
},
"ember-modifier-manager-polyfill": {
@@ -55897,6 +55890,108 @@
"requires": {
"ember-cli-babel": "^7.26.6",
"ember-modifier": "^3.2.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ember-cli-typescript": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-5.2.1.tgz",
+ "integrity": "sha512-qqp5TAIuPHxHiGXJKL+78Euyhy0zSKQMovPh8sJpN/ZBYx0H90pONufHR3anaMcp1snVfx4B+mb9+7ijOik8ZA==",
+ "requires": {
+ "ansi-to-html": "^0.6.15",
+ "broccoli-stew": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^4.0.0",
+ "fs-extra": "^9.0.1",
+ "resolve": "^1.5.0",
+ "rsvp": "^4.8.1",
+ "semver": "^7.3.2",
+ "stagehand": "^1.0.0",
+ "walk-sync": "^2.2.0"
+ }
+ },
+ "ember-modifier": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-3.2.7.tgz",
+ "integrity": "sha512-ezcPQhH8jUfcJQbbHji4/ZG/h0yyj1jRDknfYue/ypQS8fM8LrGcCMo0rjDZLzL1Vd11InjNs3BD7BdxFlzGoA==",
+ "requires": {
+ "ember-cli-babel": "^7.26.6",
+ "ember-cli-normalize-entity-name": "^1.0.0",
+ "ember-cli-string-utils": "^1.1.0",
+ "ember-cli-typescript": "^5.0.0",
+ "ember-compatibility-helpers": "^1.2.5"
+ }
+ },
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "matcher-collection": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+ "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "minimatch": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="
+ },
+ "semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
+ },
+ "walk-sync": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+ "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+ "requires": {
+ "@types/minimatch": "^3.0.3",
+ "ensure-posix-path": "^1.1.0",
+ "matcher-collection": "^2.0.0",
+ "minimatch": "^3.0.4"
+ }
+ }
}
},
"ember-styleguide": {
diff --git a/package.json b/package.json
index 5916a8e5..acd359f1 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,7 @@
"ember-concurrency": "^2.0.1",
"ember-get-config": "^2.1.1",
"ember-href-to": "^5.0.0",
+ "ember-modifier": "^4.1.0",
"ember-power-select": "^6.0.0",
"ember-showdown-shiki": "^1.0.3",
"ember-styleguide": "^8.3.0",
diff --git a/tests/integration/modifiers/highlight-active-title-test.js b/tests/integration/modifiers/highlight-active-title-test.js
new file mode 100644
index 00000000..7153adf2
--- /dev/null
+++ b/tests/integration/modifiers/highlight-active-title-test.js
@@ -0,0 +1,15 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+
+module('Integration | Modifier | highlight-active-title', function (hooks) {
+ setupRenderingTest(hooks);
+
+ // Replace this with your real tests.
+ test('it renders', async function (assert) {
+ await render(hbs``);
+
+ assert.ok(true);
+ });
+});