-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
in_dom.ts
42 lines (35 loc) · 1.11 KB
/
in_dom.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { teardownMandatorySetter } from '@ember/-internals/utils';
import type Component from '@ember/component';
import { assert } from '@ember/debug';
import { DEBUG } from '@glimmer/env';
import type { ViewState } from '../states';
import hasElement from './has_element';
const inDOM: ViewState = {
...hasElement,
enter(view: Component) {
// Register the view for event handling. This hash is used by
// Ember.EventDispatcher to dispatch incoming events.
view.renderer.register(view);
if (DEBUG) {
let elementId = view.elementId;
assert(
'[BUG] Expected teardownMandatorySetter to be set in DEBUG mode',
teardownMandatorySetter
);
teardownMandatorySetter(view, 'elementId');
Object.defineProperty(view, 'elementId', {
configurable: true,
enumerable: true,
get() {
return elementId;
},
set(value) {
if (value !== elementId) {
throw new Error("Changing a view's elementId after creation is not allowed");
}
},
});
}
},
};
export default Object.freeze(inDOM);