@lblod/ember-rdfa-editor-lblod-plugins 37.3.0 → 38.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @lblod/ember-rdfa-editor-lblod-plugins
2
2
 
3
+ ## 38.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#669](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/pull/669) [`79ffc3a`](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/commit/79ffc3afb4895d6bfd7f6c67ffb259936c0b6c44) Thanks [@lagartoverde](https://github.com/lagartoverde)! - Fix non block variables were not being added to the measure
8
+
9
+ - [`b9357c3`](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/commit/b9357c31cc7a92a4a855f372a0910e86348d85c4) Thanks [@abeforgit](https://github.com/abeforgit)! - Fix docker build
10
+
11
+ ## 38.0.0
12
+
13
+ ### Major Changes
14
+
15
+ - [#668](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/pull/668) [`b16702c`](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/commit/b16702c91011512897145fb4ff9875d138497a92) Thanks [@kobemertens](https://github.com/kobemertens)! - Bump editor peerdep to 13.12.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#665](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/pull/665) [`819a3d2`](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/commit/819a3d2193d8b51fe262bcc4ed3cf052acb2ec9f) Thanks [@kobemertens](https://github.com/kobemertens)! - Adds caching, sticky groups, and offline search for the existing context actions
20
+
21
+ - [#666](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/pull/666) [`06da07b`](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/commit/06da07bd0a260a424caa82fca8cba4c855e785cb) Thanks [@kobemertens](https://github.com/kobemertens)! - Add placeholder for empty place description
22
+
23
+ ### Patch Changes
24
+
25
+ - [#668](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/pull/668) [`31809a2`](https://github.com/lblod/ember-rdfa-editor-lblod-plugins/commit/31809a2d82778280569fb515b0fb0f356fa44f34) Thanks [@kobemertens](https://github.com/kobemertens)! - Update prosemirror-model to 1.25.9
26
+
3
27
  ## 37.3.0
4
28
 
5
29
  ### Minor Changes
package/Dockerfile CHANGED
@@ -1,11 +1,10 @@
1
- FROM node:20-slim AS builder
1
+ FROM node:22-slim AS builder
2
2
 
3
3
  LABEL maintainer="info@redpencil.io"
4
4
 
5
5
  RUN corepack enable
6
- RUN corepack prepare pnpm@9.4 --activate
7
6
  WORKDIR /app
8
- COPY package.json pnpm-lock.yaml ./
7
+ COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
9
8
  RUN pnpm i --frozen-lockfile
10
9
  COPY . .
11
10
  RUN pnpm build
@@ -17,78 +17,85 @@ const recentLocationsGroupId =
17
17
 
18
18
  const SUGGESTION_AMOUNT = 15;
19
19
 
20
- export function getContextualActions() {
21
- return function (state: EditorState, searchQuery?: string) {
22
- const t = getTranslationFunction(state);
23
- const { selection } = state;
24
- if (!(selection instanceof NodeSelection)) return [];
25
- const selectedNode = selection.node;
26
- if (selectedNode.type.name !== 'oslo_location') return [];
20
+ function getLocationSuggestionOptions(state: EditorState) {
21
+ const { selection } = state;
22
+ if (!(selection instanceof NodeSelection)) return [];
23
+ const selectedNode = selection.node;
24
+ if (selectedNode.type.name !== 'oslo_location') return [];
27
25
 
28
- const selectedLocation = selectedNode.attrs.value as
29
- | Address
30
- | Place
31
- | Area
32
- | undefined;
26
+ const selectedLocation = selectedNode.attrs.value as
27
+ | Address
28
+ | Place
29
+ | Area
30
+ | undefined;
33
31
 
34
- const locationSuggestionOptions = getDocumentLocations(state)
35
- .filter(
36
- (location) =>
37
- !selectedLocation ||
38
- getLocationUri(selectedLocation) !== getLocationUri(location),
39
- )
40
- .slice(0, SUGGESTION_AMOUNT)
41
- .map((location) => ({
42
- label: location.formatted,
43
- id: uuidv4(),
44
- group: recentLocationsGroupId,
45
- command: replaceLocationCommand(
46
- { value: selection.node, pos: selection.from },
47
- location,
48
- ),
49
- }));
32
+ return getDocumentLocations(state)
33
+ .filter(
34
+ (location) =>
35
+ !selectedLocation ||
36
+ getLocationUri(selectedLocation) !== getLocationUri(location),
37
+ )
38
+ .slice(0, SUGGESTION_AMOUNT)
39
+ .map((location) => ({
40
+ label: location.formatted,
41
+ id: uuidv4(),
42
+ group: recentLocationsGroupId,
43
+ command: replaceLocationCommand(
44
+ { value: selection.node, pos: selection.from },
45
+ location,
46
+ ),
47
+ }));
48
+ }
50
49
 
51
- const otherElementsOptions = [
52
- {
53
- label: t(
54
- 'location-plugin.context-actions.insert-address',
55
- 'Adres invoegen',
56
- ),
57
- locationType: 'address' as LocationType,
58
- icon: 'location',
59
- },
60
- {
61
- label: t(
62
- 'location-plugin.context-actions.insert-point-on-map',
63
- 'Punt op de kaart invoegen',
64
- ),
65
- locationType: 'place' as LocationType,
66
- icon: 'location-gps',
67
- },
68
- {
69
- label: t(
70
- 'location-plugin.context-actions.insert-area',
71
- 'Gebied invoegen',
72
- ),
73
- locationType: 'area' as LocationType,
74
- icon: 'area',
75
- },
76
- ].map((option) => {
77
- return {
78
- ...option,
79
- id: uuidv4(),
80
- group: otherElementsGroupId,
81
- command: openLocationModalCommand(option.locationType),
82
- };
83
- });
50
+ function getOtherElementsOptions(state: EditorState) {
51
+ const t = getTranslationFunction(state);
84
52
 
85
- return locationSuggestionOptions
86
- .concat(otherElementsOptions)
87
- .filter(
88
- (option) =>
89
- !searchQuery ||
90
- option.label.toLocaleLowerCase().includes(searchQuery.toLowerCase()),
91
- );
53
+ return [
54
+ {
55
+ label: t(
56
+ 'location-plugin.context-actions.insert-address',
57
+ 'Adres invoegen',
58
+ ),
59
+ locationType: 'address' as LocationType,
60
+ icon: 'location',
61
+ },
62
+ {
63
+ label: t(
64
+ 'location-plugin.context-actions.insert-point-on-map',
65
+ 'Punt op de kaart invoegen',
66
+ ),
67
+ locationType: 'place' as LocationType,
68
+ icon: 'location-gps',
69
+ },
70
+ {
71
+ label: t(
72
+ 'location-plugin.context-actions.insert-area',
73
+ 'Gebied invoegen',
74
+ ),
75
+ locationType: 'area' as LocationType,
76
+ icon: 'area',
77
+ },
78
+ ].map((option) => {
79
+ return {
80
+ ...option,
81
+ id: uuidv4(),
82
+ group: otherElementsGroupId,
83
+ command: openLocationModalCommand(option.locationType),
84
+ };
85
+ });
86
+ }
87
+
88
+ export function getContextualActions(type: 'suggestions' | 'other_elements') {
89
+ return function (state: EditorState, searchQuery?: string) {
90
+ const options =
91
+ type === 'suggestions'
92
+ ? getLocationSuggestionOptions(state)
93
+ : getOtherElementsOptions(state);
94
+ return options.filter(
95
+ (option) =>
96
+ !searchQuery ||
97
+ option.label.toLocaleLowerCase().includes(searchQuery.toLowerCase()),
98
+ );
92
99
  };
93
100
  }
94
101
 
@@ -101,7 +108,7 @@ function contextualGroupIsVisible(state: EditorState) {
101
108
  }
102
109
 
103
110
  export function getContextualActionGroups() {
104
- return function (state: EditorState) {
111
+ return function (state: EditorState): ContextualActionGroup[] {
105
112
  if (!contextualGroupIsVisible(state)) return [];
106
113
  return [
107
114
  {
@@ -110,14 +117,12 @@ export function getContextualActionGroups() {
110
117
  'location-plugin.context-actions.location-suggestions',
111
118
  'Locatiesuggesties',
112
119
  ),
120
+ getActions: getContextualActions('suggestions'),
113
121
  },
114
122
  {
115
123
  id: otherElementsGroupId,
116
- label: getTranslationFunction(state)(
117
- 'location-plugin.context-actions.other-elements',
118
- 'Andere elementen',
119
- ),
120
124
  sticky: 'bottom',
125
+ getActions: getContextualActions('other_elements'),
121
126
  },
122
127
  ] satisfies ContextualActionGroup[];
123
128
  };
@@ -8,6 +8,7 @@ import {
8
8
  TextSelection,
9
9
  PNode,
10
10
  Selection,
11
+ Command,
11
12
  } from '@lblod/ember-rdfa-editor';
12
13
  import type { FullTriple } from '@lblod/ember-rdfa-editor/core/rdfa-processor';
13
14
  import { PROV } from '@lblod/ember-rdfa-editor-lblod-plugins/utils/constants';
@@ -39,7 +40,7 @@ function moveNodeSelectionForward(selection: Selection, doc: PNode) {
39
40
  export function replaceLocationCommand(
40
41
  node: ResolvedPNode,
41
42
  location: Address | Place | Area,
42
- ) {
43
+ ): Command {
43
44
  return function (state: EditorState, dispatch?: (tr: Transaction) => void) {
44
45
  const df = new SayDataFactory();
45
46
  const { pos, value: locNode } = node;
@@ -1,6 +1,5 @@
1
1
  import { MOBILITEIT } from '@lblod/ember-rdfa-editor-lblod-plugins/utils/constants';
2
2
  import { ValueOf } from '@lblod/ember-rdfa-editor-lblod-plugins/utils/types';
3
- import { ValuesOf } from '@lblod/ember-rdfa-editor/utils/_private/types';
4
3
 
5
4
  export const ZONALITY_OPTIONS = {
6
5
  POTENTIALLY_ZONAL:
@@ -54,7 +53,7 @@ export function isLegacyZonalityUri(uri: string): uri is LegacyZonalityUri {
54
53
  return Object.values(ZONALITY_OPTIONS_LEGACY).includes(uri);
55
54
  }
56
55
 
57
- export type ZonalityOption = ValuesOf<typeof ZONALITY_OPTIONS>;
56
+ export type ZonalityOption = ValueOf<typeof ZONALITY_OPTIONS>;
58
57
  export type ZonalOrNot = Exclude<
59
58
  ZonalityOption,
60
59
  typeof ZONALITY_OPTIONS.POTENTIALLY_ZONAL
@@ -35,6 +35,8 @@ export function constructMeasureFragment(
35
35
  currentParagraphContent = [];
36
36
  }
37
37
  fragment.push(node);
38
+ } else {
39
+ currentParagraphContent.push(node);
38
40
  }
39
41
  } else {
40
42
  currentParagraphContent.push(schema.text(part));
@@ -83,5 +83,6 @@ export function createClassicLocationVariableAttrs({
83
83
  backlinks: [...backlinks, ...addedBacklinks],
84
84
  label: label ?? 'Plaatsbeschrijving',
85
85
  source,
86
+ placeholder: 'Plaatsbeschrijving toevoegen',
86
87
  };
87
88
  }
@@ -24,10 +24,18 @@ import { getActiveEditableNode } from '@lblod/ember-rdfa-editor/plugins/editable
24
24
  import { isRdfaAttrs } from '@lblod/ember-rdfa-editor/core/rdfa-types';
25
25
  import { v4 as uuidv4 } from 'uuid';
26
26
  import { getTranslationFunction } from '@lblod/ember-rdfa-editor-lblod-plugins/utils/translation';
27
+ import { type CodeListOptions } from '../utils/fetch-data';
28
+ import { ContextualActionGroup } from '@lblod/ember-rdfa-editor/plugins/contextual-actions';
27
29
 
28
30
  const plaatsbepalingGroupId =
29
31
  'plaatsbepaling-1d8563d6-bfd8-487f-a2a0-6d7a6ab01cb5';
30
32
 
33
+ const placeDescriptionCodelistCache: {
34
+ placeDescriptions: CodeListOptions | null;
35
+ } = {
36
+ placeDescriptions: null,
37
+ };
38
+
31
39
  function getSelectedLocation(state: EditorState) {
32
40
  const { selection } = state;
33
41
  if (
@@ -131,27 +139,47 @@ function createInsertPlaceDescriptionCommand(label: string) {
131
139
  };
132
140
  }
133
141
 
134
- export function getContextualActions({
135
- zonalLocationCodelistUri,
136
- nonZonalLocationCodelistUri,
137
- endpoint,
138
- }: GetContextualActionsAttrs) {
139
- return async function (state: EditorState) {
140
- const source = getSource(state, endpoint);
141
- const isZonal = getIsZonal(state);
142
- const result = await fetchCodeListOptions(
142
+ async function getPlaceDescriptionsCached(
143
+ state: EditorState,
144
+ {
145
+ zonalLocationCodelistUri,
146
+ nonZonalLocationCodelistUri,
147
+ endpoint,
148
+ }: GetContextualActionsAttrs,
149
+ ) {
150
+ const source = getSource(state, endpoint);
151
+ const isZonal = getIsZonal(state);
152
+ let options;
153
+ if (!placeDescriptionCodelistCache.placeDescriptions) {
154
+ options = await fetchCodeListOptions(
143
155
  source,
144
156
  isZonal ? zonalLocationCodelistUri : nonZonalLocationCodelistUri,
145
157
  );
158
+ placeDescriptionCodelistCache.placeDescriptions = options;
159
+ } else {
160
+ options = placeDescriptionCodelistCache.placeDescriptions;
161
+ }
146
162
 
147
- return result.options.map((option) => {
148
- return {
149
- id: uuidv4(),
150
- label: humanReadableLabel(option.label),
151
- group: plaatsbepalingGroupId,
152
- command: createInsertPlaceDescriptionCommand(option.label),
153
- };
154
- });
163
+ return options;
164
+ }
165
+
166
+ export function getContextualActions(attrs: GetContextualActionsAttrs) {
167
+ return async function (state: EditorState, searchQuery?: string) {
168
+ const result = await getPlaceDescriptionsCached(state, attrs);
169
+ return result.options
170
+ .filter(
171
+ (option) =>
172
+ !searchQuery ||
173
+ option.label.toLowerCase().includes(searchQuery.toLowerCase()),
174
+ )
175
+ .map((option) => {
176
+ return {
177
+ id: uuidv4(),
178
+ label: humanReadableLabel(option.label),
179
+ group: plaatsbepalingGroupId,
180
+ command: createInsertPlaceDescriptionCommand(option.label),
181
+ };
182
+ });
155
183
  };
156
184
  }
157
185
 
@@ -171,8 +199,8 @@ function contextualGroupIsVisible(state: EditorState) {
171
199
  );
172
200
  }
173
201
 
174
- export function getContextualActionGroups() {
175
- return function (state: EditorState) {
202
+ export function getContextualActionGroups(attrs: GetContextualActionsAttrs) {
203
+ return function (state: EditorState): ContextualActionGroup[] {
176
204
  return contextualGroupIsVisible(state)
177
205
  ? [
178
206
  {
@@ -181,6 +209,7 @@ export function getContextualActionGroups() {
181
209
  'variable.location.label',
182
210
  'Plaatsbeschrijving',
183
211
  ),
212
+ getActions: getContextualActions(attrs),
184
213
  },
185
214
  ]
186
215
  : [];
@@ -3,7 +3,7 @@ import { EXT } from '@lblod/ember-rdfa-editor-lblod-plugins/utils/constants';
3
3
 
4
4
  export const span = (
5
5
  attributes: Attrs = {},
6
- ...children: (DOMOutputSpec | 0)[]
6
+ ...children: (DOMOutputSpec | string | 0)[]
7
7
  ): DOMOutputSpec => {
8
8
  return ['span', attributes, ...children];
9
9
  };
@@ -13,7 +13,7 @@ export const span = (
13
13
  */
14
14
  export const contentSpan = (
15
15
  attributes: Attrs,
16
- ...children: (DOMOutputSpec | 0)[]
16
+ ...children: (DOMOutputSpec | string | 0)[]
17
17
  ) => {
18
18
  return span(
19
19
  {
@@ -1,16 +1,9 @@
1
1
  import { EditorState } from '@lblod/ember-rdfa-editor';
2
- export declare function getContextualActions(): (state: EditorState, searchQuery?: string) => {
2
+ import { ContextualActionGroup } from '@lblod/ember-rdfa-editor/plugins/contextual-actions';
3
+ export declare function getContextualActions(type: 'suggestions' | 'other_elements'): (state: EditorState, searchQuery?: string) => {
3
4
  label: string;
4
5
  id: string;
5
6
  group: string;
6
- command: (state: EditorState, dispatch?: (tr: import("@lblod/ember-rdfa-editor").Transaction) => void) => boolean;
7
+ command: import("@lblod/ember-rdfa-editor").Command;
7
8
  }[];
8
- export declare function getContextualActionGroups(): (state: EditorState) => ({
9
- id: string;
10
- label: string;
11
- sticky?: undefined;
12
- } | {
13
- id: string;
14
- label: string;
15
- sticky: "bottom";
16
- })[];
9
+ export declare function getContextualActionGroups(): (state: EditorState) => ContextualActionGroup[];
@@ -1,5 +1,5 @@
1
1
  import { ResolvedPNode } from '@lblod/ember-rdfa-editor/utils/_private/types';
2
2
  import { Address } from './address-helpers';
3
3
  import { Area, Place } from './geo-helpers';
4
- import { EditorState, Transaction } from '@lblod/ember-rdfa-editor';
5
- export declare function replaceLocationCommand(node: ResolvedPNode, location: Address | Place | Area): (state: EditorState, dispatch?: (tr: Transaction) => void) => boolean;
4
+ import { Command } from '@lblod/ember-rdfa-editor';
5
+ export declare function replaceLocationCommand(node: ResolvedPNode, location: Address | Place | Area): Command;
@@ -1,5 +1,4 @@
1
1
  import { ValueOf } from '@lblod/ember-rdfa-editor-lblod-plugins/utils/types';
2
- import { ValuesOf } from '@lblod/ember-rdfa-editor/utils/_private/types';
3
2
  export declare const ZONALITY_OPTIONS: {
4
3
  readonly POTENTIALLY_ZONAL: "http://register.mobiliteit.vlaanderen.be/concepts/8f9367b2-c717-4be7-8833-4c75bbb4ae1f";
5
4
  readonly ZONAL: "http://register.mobiliteit.vlaanderen.be/concepts/c81c6b96-736a-48cf-b003-6f5cc3dbc55d";
@@ -16,7 +15,7 @@ export declare function getLegacyZonalityUri(uri: ZonalityUri | LegacyZonalityUr
16
15
  export declare function getNewZonalityUri(uri: ZonalityUri | LegacyZonalityUri): ZonalityUri;
17
16
  export declare function isNewZonalityUri(uri: string): uri is ZonalityUri;
18
17
  export declare function isLegacyZonalityUri(uri: string): uri is LegacyZonalityUri;
19
- export type ZonalityOption = ValuesOf<typeof ZONALITY_OPTIONS>;
18
+ export type ZonalityOption = ValueOf<typeof ZONALITY_OPTIONS>;
20
19
  export type ZonalOrNot = Exclude<ZonalityOption, typeof ZONALITY_OPTIONS.POTENTIALLY_ZONAL>;
21
20
  export declare const TRAFFIC_SIGNAL_CONCEPT_TYPES: {
22
21
  readonly TRAFFIC_SIGNAL: "https://data.vlaanderen.be/ns/mobiliteit#Verkeerstekenconcept";
@@ -23,5 +23,6 @@ export declare function createClassicLocationVariableAttrs({ variable, variableI
23
23
  backlinks: IncomingTriple[];
24
24
  label: string;
25
25
  source: string | undefined;
26
+ placeholder: string;
26
27
  };
27
28
  export {};
@@ -1,17 +1,15 @@
1
1
  import { EditorState, Transaction } from '@lblod/ember-rdfa-editor';
2
+ import { ContextualActionGroup } from '@lblod/ember-rdfa-editor/plugins/contextual-actions';
2
3
  type GetContextualActionsAttrs = {
3
4
  zonalLocationCodelistUri: string;
4
5
  nonZonalLocationCodelistUri: string;
5
6
  endpoint?: string;
6
7
  };
7
- export declare function getContextualActions({ zonalLocationCodelistUri, nonZonalLocationCodelistUri, endpoint, }: GetContextualActionsAttrs): (state: EditorState) => Promise<{
8
+ export declare function getContextualActions(attrs: GetContextualActionsAttrs): (state: EditorState, searchQuery?: string) => Promise<{
8
9
  id: string;
9
10
  label: string;
10
11
  group: string;
11
12
  command: (state: EditorState, dispatch?: (tr: Transaction) => void) => boolean;
12
13
  }[]>;
13
- export declare function getContextualActionGroups(): (state: EditorState) => {
14
- id: string;
15
- label: string;
16
- }[];
14
+ export declare function getContextualActionGroups(attrs: GetContextualActionsAttrs): (state: EditorState) => ContextualActionGroup[];
17
15
  export {};
@@ -1,6 +1,6 @@
1
1
  import { Attrs, DOMOutputSpec } from '@lblod/ember-rdfa-editor';
2
- export declare const span: (attributes?: Attrs, ...children: (DOMOutputSpec | 0)[]) => DOMOutputSpec;
2
+ export declare const span: (attributes?: Attrs, ...children: (DOMOutputSpec | string | 0)[]) => DOMOutputSpec;
3
3
  /**
4
4
  * Constructs a variable content span. Accepts optional additional attributes and a series of children.
5
5
  */
6
- export declare const contentSpan: (attributes: Attrs, ...children: (DOMOutputSpec | 0)[]) => DOMOutputSpec;
6
+ export declare const contentSpan: (attributes: Attrs, ...children: (DOMOutputSpec | string | 0)[]) => DOMOutputSpec;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lblod/ember-rdfa-editor-lblod-plugins",
3
- "version": "37.3.0",
3
+ "version": "38.0.1",
4
4
  "description": "Ember addon providing lblod specific plugins for the ember-rdfa-editor",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -110,7 +110,7 @@
110
110
  "@glint/ember-tsc": "^1.5.0",
111
111
  "@glint/environment-ember-loose": "^1.5.0",
112
112
  "@glint/environment-ember-template-imports": "^1.5.0",
113
- "@lblod/ember-rdfa-editor": "13.10.0",
113
+ "@lblod/ember-rdfa-editor": "13.12.0",
114
114
  "@glint/template": "^1.7.7",
115
115
  "@rdfjs/to-ntriples": "^3.0.1",
116
116
  "@rdfjs/types": "^2.0.1",
@@ -183,7 +183,7 @@
183
183
  "@appuniversum/ember-appuniversum": "^3.12.0",
184
184
  "@ember/string": "3.x",
185
185
  "@glint/template": "^1.4.0",
186
- "@lblod/ember-rdfa-editor": "^13.10.0",
186
+ "@lblod/ember-rdfa-editor": "^13.12.0",
187
187
  "ember-concurrency": "^4.0.2",
188
188
  "ember-element-helper": "^0.8.6",
189
189
  "ember-intl": "^7.0.0",
@@ -204,18 +204,11 @@
204
204
  }
205
205
  },
206
206
  "overrides": {},
207
- "pnpm": {
208
- "overrides": {
209
- "babel-plugin-ember-template-compilation": "^2.2.5",
210
- "@codemirror/state": "6.5.2",
211
- "prosemirror-view": "^1.41.5"
212
- }
213
- },
214
207
  "engines": {
215
208
  "node": ">= 18"
216
209
  },
217
210
  "volta": {
218
- "node": "20.11.0"
211
+ "node": "22.22.0"
219
212
  },
220
213
  "ember": {
221
214
  "edition": "octane"
@@ -0,0 +1,2 @@
1
+ overrides:
2
+ 'prosemirror-model': '^1.25.9'