FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
nativescript-angular/nativescript-angular/element-registry.ts at master · ntrp/nativescript-angular · GitHub
ntrp
/
nativescript-angular
Public
forked from
NativeScript/nativescript-angular
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
nativescript-angular
/
nativescript-angular
/
element-registry.ts
Copy path
More file actions
More file actions
Latest commit
History
History
History
108 lines (94 loc) · 4.8 KB
Breadcrumbs
nativescript-angular
/
nativescript-angular
/
element-registry.ts
Copy path
File metadata and controls
108 lines (94 loc) · 4.8 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import
{
View
}
from
'ui/core/view'
;
export
type
ViewResolver
=
(
)
=>
ViewClass
;
export
type
NgView
=
View
&
ViewExtensions
;
export
interface
ViewClassMeta
{
skipAddToDom
?:
boolean
;
insertChild
?:
(
parent
:
NgView
,
child
:
NgView
,
atIndex
:
number
)
=>
void
;
removeChild
?:
(
parent
:
NgView
,
child
:
NgView
)
=>
void
;
}
export
interface
ViewExtensions
{
nodeName
:
string
;
templateParent
:
NgView
;
cssClasses
:
Map
<
string
,
boolean
>
;
meta
:
ViewClassMeta
;
}
export
interface
ViewClass
{
new
(
)
:
View
}
const
defaultViewMeta
:
ViewClassMeta
=
{
skipAddToDom
:
false
,
}
const
elementMap
:
Map
<
string
,
{
resolver
:
ViewResolver
,
meta
?:
ViewClassMeta
}
>
=
new
Map
<
string
,
{
resolver
:
ViewResolver
,
meta
?:
ViewClassMeta
}
>
(
)
;
const
camelCaseSplit
=
/
(
[
a
-
z
0
-
9
]
)
(
[
A
-
Z
]
)
/
g
;
export
function
registerElement
(
elementName
:
string
,
resolver
:
ViewResolver
,
meta
?:
ViewClassMeta
)
:
void
{
if
(
elementMap
.
has
(
elementName
)
)
{
throw
new
Error
(
`Element for
${
elementName
}
already registered.`
)
;
}
else
{
const
entry
=
{
resolver
:
resolver
,
meta
:
meta
}
;
elementMap
.
set
(
elementName
,
entry
)
;
elementMap
.
set
(
elementName
.
toLowerCase
(
)
,
entry
)
;
elementMap
.
set
(
elementName
.
replace
(
camelCaseSplit
,
"$1-$2"
)
.
toLowerCase
(
)
,
entry
)
;
}
}
export
function
getViewClass
(
elementName
:
string
)
:
ViewClass
{
const
entry
=
elementMap
.
get
(
elementName
)
||
elementMap
.
get
(
elementName
.
toLowerCase
(
)
)
;
if
(
!
entry
)
{
throw
new
TypeError
(
`No known component for element
${
elementName
}
.`
)
;
}
try
{
return
entry
.
resolver
(
)
;
}
catch
(
e
)
{
throw
new
TypeError
(
`Could not load view for:
${
elementName
}
.
${
e
}
`
)
;
}
}
export
function
getViewMeta
(
nodeName
:
string
)
:
ViewClassMeta
{
let
meta
=
defaultViewMeta
;
const
entry
=
elementMap
.
get
(
nodeName
)
||
elementMap
.
get
(
nodeName
.
toLowerCase
(
)
)
;
if
(
entry
&&
entry
.
meta
)
{
meta
=
entry
.
meta
;
}
return
meta
;
}
export
function
isKnownView
(
elementName
:
string
)
:
boolean
{
return
elementMap
.
has
(
elementName
)
||
elementMap
.
has
(
elementName
.
toLowerCase
(
)
)
;
}
//Register default NativeScript components
//Note: ActionBar related components are registerd together with action-bar directives.
registerElement
(
"AbsoluteLayout"
,
(
)
=>
require
(
"ui/layouts/absolute-layout"
)
.
AbsoluteLayout
)
;
registerElement
(
"ActivityIndicator"
,
(
)
=>
require
(
"ui/activity-indicator"
)
.
ActivityIndicator
)
;
registerElement
(
"Border"
,
(
)
=>
require
(
"ui/border"
)
.
Border
)
;
registerElement
(
"Button"
,
(
)
=>
require
(
"ui/button"
)
.
Button
)
;
registerElement
(
"ContentView"
,
(
)
=>
require
(
"ui/content-view"
)
.
ContentView
)
;
registerElement
(
"DatePicker"
,
(
)
=>
require
(
"ui/date-picker"
)
.
DatePicker
)
;
registerElement
(
"DockLayout"
,
(
)
=>
require
(
"ui/layouts/dock-layout"
)
.
DockLayout
)
;
registerElement
(
"GridLayout"
,
(
)
=>
require
(
"ui/layouts/grid-layout"
)
.
GridLayout
)
;
registerElement
(
"HtmlView"
,
(
)
=>
require
(
"ui/html-view"
)
.
HtmlView
)
;
registerElement
(
"Image"
,
(
)
=>
require
(
"ui/image"
)
.
Image
)
;
// Parse5 changes <Image> tags to <img>. WTF!
registerElement
(
"img"
,
(
)
=>
require
(
"ui/image"
)
.
Image
)
;
registerElement
(
"Label"
,
(
)
=>
require
(
"ui/label"
)
.
Label
)
;
registerElement
(
"ListPicker"
,
(
)
=>
require
(
"ui/list-picker"
)
.
ListPicker
)
;
registerElement
(
"ListView"
,
(
)
=>
require
(
"ui/list-view"
)
.
ListView
)
;
registerElement
(
"Page"
,
(
)
=>
require
(
"ui/page"
)
.
Page
)
;
registerElement
(
"Placeholder"
,
(
)
=>
require
(
"ui/placeholder"
)
.
Placeholder
)
;
registerElement
(
"Progress"
,
(
)
=>
require
(
"ui/progress"
)
.
Progress
)
;
registerElement
(
"ProxyViewContainer"
,
(
)
=>
require
(
"ui/proxy-view-container"
)
.
ProxyViewContainer
)
;
registerElement
(
"Repeater"
,
(
)
=>
require
(
"ui/repeater"
)
.
Repeater
)
;
registerElement
(
"ScrollView"
,
(
)
=>
require
(
"ui/scroll-view"
)
.
ScrollView
)
;
registerElement
(
"SearchBar"
,
(
)
=>
require
(
"ui/search-bar"
)
.
SearchBar
)
;
registerElement
(
"SegmentedBar"
,
(
)
=>
require
(
"ui/segmented-bar"
)
.
SegmentedBar
)
;
registerElement
(
"SegmentedBarItem"
,
(
)
=>
require
(
"ui/segmented-bar"
)
.
SegmentedBarItem
)
;
registerElement
(
"Slider"
,
(
)
=>
require
(
"ui/slider"
)
.
Slider
)
;
registerElement
(
"StackLayout"
,
(
)
=>
require
(
"ui/layouts/stack-layout"
)
.
StackLayout
)
;
registerElement
(
"Switch"
,
(
)
=>
require
(
"ui/switch"
)
.
Switch
)
;
registerElement
(
"TabView"
,
(
)
=>
require
(
"ui/tab-view"
)
.
TabView
)
;
registerElement
(
"TextField"
,
(
)
=>
require
(
"ui/text-field"
)
.
TextField
)
;
registerElement
(
"TextView"
,
(
)
=>
require
(
"ui/text-view"
)
.
TextView
)
;
registerElement
(
"TimePicker"
,
(
)
=>
require
(
"ui/time-picker"
)
.
TimePicker
)
;
registerElement
(
"WebView"
,
(
)
=>
require
(
"ui/web-view"
)
.
WebView
)
;
registerElement
(
"WrapLayout"
,
(
)
=>
require
(
"ui/layouts/wrap-layout"
)
.
WrapLayout
)
;
registerElement
(
"FormattedString"
,
(
)
=>
require
(
"text/formatted-string"
)
.
FormattedString
)
;
registerElement
(
"Span"
,
(
)
=>
require
(
"text/span"
)
.
Span
)
;
registerElement
(
"DetachedContainer"
,
(
)
=>
require
(
"ui/proxy-view-container"
)
.
ProxyViewContainer
,
{
skipAddToDom
:
true
}
)
;
Back
|
FazBrowse Home
|
New Git URL