From ba1407bb2dfe97ca3655dcf93d20082188d01af7 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 16 May 2022 15:26:32 +0100 Subject: [PATCH 1/7] use ember-get-config in the tests (to fix embroider meta tests) --- tests/acceptance/meta-test-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/acceptance/meta-test-test.js b/tests/acceptance/meta-test-test.js index 55330ea..ec6650c 100644 --- a/tests/acceptance/meta-test-test.js +++ b/tests/acceptance/meta-test-test.js @@ -2,7 +2,7 @@ import { module, test } from 'qunit'; import { visit } from '@ember/test-helpers'; import { setupApplicationTest } from 'ember-qunit'; -import config from '../../config/environment'; +import config from 'ember-get-config'; let originalConfig; From 810ef226b2c42277866f8b1bb400906e232d84a4 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 16 May 2022 17:51:33 +0100 Subject: [PATCH 2/7] fix dynamic component to support embroider-optimised --- addon/components/dynamic-template.hbs | 1 + addon/components/dynamic-template.js | 50 +++++++++---------- .../templates/components/dynamic-template.hbs | 1 - 3 files changed, 24 insertions(+), 28 deletions(-) create mode 100644 addon/components/dynamic-template.hbs delete mode 100644 addon/templates/components/dynamic-template.hbs diff --git a/addon/components/dynamic-template.hbs b/addon/components/dynamic-template.hbs new file mode 100644 index 0000000..dbc8338 --- /dev/null +++ b/addon/components/dynamic-template.hbs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addon/components/dynamic-template.js b/addon/components/dynamic-template.js index 9b6f591..3da95e7 100644 --- a/addon/components/dynamic-template.js +++ b/addon/components/dynamic-template.js @@ -1,21 +1,15 @@ -/* eslint-disable ember/no-classic-components, ember/no-classic-classes, prettier/prettier, no-console */ - -import Component from '@ember/component'; -import GlimmerComponent from '@glimmer/component'; -import layout from '../templates/components/dynamic-template'; - -import { computed } from '@ember/object'; +import { setComponentTemplate } from '@ember/component'; import { getOwner } from '@ember/application'; import { compileTemplate } from '@ember/template-compilation'; +import Component from '@glimmer/component'; + let templateOwnerMap = new Map(); let templateId = 0; -export default Component.extend({ - tagName: '', - layout, - init() { - this._super(...arguments); +export default class DynamicTemplateComponent extends Component { + constructor() { + super(...arguments); let owner = getOwner(this); let templateMap = templateOwnerMap.get(owner); @@ -23,13 +17,16 @@ export default Component.extend({ templateMap = templateOwnerMap.set(owner, new Map()); } this.templateMap = templateMap; - }, + } - componentName: computed('templateString', 'componentId', function() { - let { templateMap, templateString } = this; - if (!templateString) { return null; } + get component() { + let { templateString } = this.args; + if (!templateString) { + return null; + } - let componentName = templateMap.get(templateString); + let componentName = this.templateMap.get(templateString); + let component; if (componentName === undefined) { let owner = getOwner(this); @@ -39,23 +36,22 @@ export default Component.extend({ } catch (err) { console.error(err); console.error(templateString); - compiledTemplate = compileTemplate(``) + compiledTemplate = compileTemplate(``); } - let component = owner.factoryFor(`component:${this.componentId}`); + component = owner.factoryFor(`component:${this.args.componentId}`); - if(!component) { - component = class extends GlimmerComponent {}; + if (!component) { + component = class extends Component {}; } else { - component = class extends component.class {} + component = class extends component.class {}; } componentName = `some-prefix-${templateId++}`; - owner.register(`component:${componentName}`, component); - owner.register(`template:components/${componentName}`, compiledTemplate); + setComponentTemplate(compiledTemplate, component); } - return componentName; - }) -}); + return component; + } +} diff --git a/addon/templates/components/dynamic-template.hbs b/addon/templates/components/dynamic-template.hbs deleted file mode 100644 index 304b2c1..0000000 --- a/addon/templates/components/dynamic-template.hbs +++ /dev/null @@ -1 +0,0 @@ -{{component (ensure-safe-component (component this.componentName)) tagName=""}} \ No newline at end of file From f0169f5afeb3e433c867536eb515194016eba8ee Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Fri, 24 Jun 2022 17:43:16 +0100 Subject: [PATCH 3/7] hack to solve ColorPallet lookup issue --- addon/components/dynamic-template.hbs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addon/components/dynamic-template.hbs b/addon/components/dynamic-template.hbs index dbc8338..2a09794 100644 --- a/addon/components/dynamic-template.hbs +++ b/addon/components/dynamic-template.hbs @@ -1 +1,7 @@ +{{#if false}} + {{!-- This is just here to tell embroider to include in + any bundle that is used in --}} + +{{/if}} + \ No newline at end of file From 155d861e353328dab36805e1b00dbf7fac536475 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 27 Jun 2022 17:52:13 +0100 Subject: [PATCH 4/7] add fix for dynamically loading backing class --- addon/components/dynamic-template.js | 27 +++++++++++++++------------ index.js | 9 +++++++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/addon/components/dynamic-template.js b/addon/components/dynamic-template.js index 3da95e7..d1d3dd8 100644 --- a/addon/components/dynamic-template.js +++ b/addon/components/dynamic-template.js @@ -1,11 +1,10 @@ import { setComponentTemplate } from '@ember/component'; import { getOwner } from '@ember/application'; import { compileTemplate } from '@ember/template-compilation'; - +import { importSync } from '@embroider/macros'; import Component from '@glimmer/component'; let templateOwnerMap = new Map(); -let templateId = 0; export default class DynamicTemplateComponent extends Component { constructor() { @@ -25,11 +24,8 @@ export default class DynamicTemplateComponent extends Component { return null; } - let componentName = this.templateMap.get(templateString); - let component; - if (componentName === undefined) { - let owner = getOwner(this); - + let component = this.templateMap.get(templateString); + if (component === undefined) { let compiledTemplate; try { compiledTemplate = compileTemplate(templateString); @@ -39,17 +35,24 @@ export default class DynamicTemplateComponent extends Component { compiledTemplate = compileTemplate(``); } - component = owner.factoryFor(`component:${this.args.componentId}`); + let module; + try { + // eslint-disable-next-line no-undef + module = importSync(`/docs/${this.args.componentId}.js`); + } catch (err) { + // backing class doesn't exist so just ignore the error + } + + component = module?.default; if (!component) { component = class extends Component {}; - } else { - component = class extends component.class {}; } - componentName = `some-prefix-${templateId++}`; - setComponentTemplate(compiledTemplate, component); + + // eslint-disable-next-line ember/no-side-effects + this.templateMap.set(templateString, component); } return component; diff --git a/index.js b/index.js index 72ded25..6c935b0 100644 --- a/index.js +++ b/index.js @@ -90,9 +90,18 @@ module.exports = { subdir: 'docs', }); + let backingClasses = new Funnel( + 'docs', + { + destDir: 'docs', + include: ['**/*.js'] + } + ); + return new MergeTrees([ docs, toc, + backingClasses, ]); }, From af66b5f3bb2d7a23b6e16e00b0b2aa4f74d16788 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Tue, 28 Jun 2022 09:15:35 +0100 Subject: [PATCH 5/7] implement fallback mode to find backing class --- addon/components/dynamic-template.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/addon/components/dynamic-template.js b/addon/components/dynamic-template.js index d1d3dd8..f423299 100644 --- a/addon/components/dynamic-template.js +++ b/addon/components/dynamic-template.js @@ -19,6 +19,8 @@ export default class DynamicTemplateComponent extends Component { } get component() { + let owner = getOwner(this); + let { templateString } = this.args; if (!templateString) { return null; @@ -35,15 +37,21 @@ export default class DynamicTemplateComponent extends Component { compiledTemplate = compileTemplate(``); } - let module; - try { - // eslint-disable-next-line no-undef - module = importSync(`/docs/${this.args.componentId}.js`); - } catch (err) { - // backing class doesn't exist so just ignore the error - } + component = owner.factoryFor(`component:${this.args.componentId}`); + + if (component) { + component = class extends component.class {}; + } else { + // if component couldn't be found the old way try importing it directly + let module; + try { + module = importSync(`/docs/${this.args.componentId}.js`); + } catch (err) { + // backing class doesn't exist so just ignore the error + } - component = module?.default; + component = module?.default; + } if (!component) { component = class extends Component {}; From 3972a0d3599fab49b25511c047681911026af8f3 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Mon, 25 Jul 2022 10:48:42 +0100 Subject: [PATCH 6/7] fix component rendering in older Ember versions --- addon/components/dynamic-template.hbs | 2 +- package.json | 1 + pnpm-lock.yaml | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/addon/components/dynamic-template.hbs b/addon/components/dynamic-template.hbs index 2a09794..ea7ebc8 100644 --- a/addon/components/dynamic-template.hbs +++ b/addon/components/dynamic-template.hbs @@ -4,4 +4,4 @@ {{/if}} - \ No newline at end of file +{{component (ensure-safe-component this.component)}} \ No newline at end of file diff --git a/package.json b/package.json index 6b7045c..1d3f11d 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ }, "dependencies": { "@babel/core": "^7.24.4", + "@embroider/macros": "^1.16.5", "@embroider/util": "^1.13.2", "@glimmer/component": "^1.1.2", "broccoli-funnel": "^3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c362b35..48298c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ dependencies: '@babel/core': specifier: ^7.24.4 version: 7.24.9 + '@embroider/macros': + specifier: ^1.16.5 + version: 1.16.5 '@embroider/util': specifier: ^1.13.2 version: 1.13.2(ember-source@5.8.0) From 17a170fef7b522a0ff105dfc4591ee41df939c62 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Fri, 21 Oct 2022 16:06:13 +0100 Subject: [PATCH 7/7] remove unused innertext dependency --- addon/services/head-data.js | 5 ----- package.json | 1 - pnpm-lock.yaml | 13 ------------- 3 files changed, 19 deletions(-) diff --git a/addon/services/head-data.js b/addon/services/head-data.js index bfbb430..e5c3909 100644 --- a/addon/services/head-data.js +++ b/addon/services/head-data.js @@ -2,7 +2,6 @@ import HeadDataService from 'ember-meta/services/head-data'; import { computed } from '@ember/object'; import config from 'ember-get-config'; -import innertext from 'innertext'; import { getExcerpt, stripHTML } from 'ember-html-excerpt/helpers/excerpt'; @@ -24,10 +23,6 @@ export default class CustomHeadDataService extends HeadDataService { return this.currentRouteMeta?.title ?? `${this.config.name} - ${this.config.tagLine ?? 'Field Guide'}`; } - get content() { - return innertext(this.currentRouteMeta.html); - } - @computed('currentRouteMeta') get description() { let currentModel = this.currentRouteMeta; diff --git a/package.json b/package.json index 1d3f11d..ba775ad 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,6 @@ "ember-meta": "^2.0.0", "ember-prism": "^0.13.0", "empress-blueprint-helpers": "^1.2.1", - "innertext": "^1.0.3", "resolve": "^1.17.0", "walk-sync": "^2.2.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48298c8..c64d366 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,6 @@ dependencies: empress-blueprint-helpers: specifier: ^1.2.1 version: 1.2.1 - innertext: - specifier: ^1.0.3 - version: 1.0.3 resolve: specifier: ^1.17.0 version: 1.22.8 @@ -7669,10 +7666,6 @@ packages: whatwg-encoding: 2.0.0 dev: true - /html-entities@1.4.0: - resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} - dev: false - /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} @@ -7897,12 +7890,6 @@ packages: xtend: 4.0.2 dev: true - /innertext@1.0.3: - resolution: {integrity: sha512-ZC410b7IbrTrmt8bQb27xUOJgXkJu+XL6MVncb9FGyxjRIHyQqNjpSDY20zvSUttkAiYj0dait/67/sXyWvwYg==} - dependencies: - html-entities: 1.4.0 - dev: false - /inquirer@6.5.2: resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} engines: {node: '>=6.0.0'}