Skip to content

Commit cc5096d

Browse files
authored
Merge pull request #210 from github/add-define-export-for-custom-element-registration
add `define` export for custom element registration
2 parents 5ff8819 + 344cef3 commit cc5096d

File tree

6 files changed

+120
-48
lines changed

6 files changed

+120
-48
lines changed

package.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@
1010
"dist",
1111
"custom-elements.json"
1212
],
13+
"exports": {
14+
".": "./dist/index.js",
15+
"./define": "./dist/index.js",
16+
"./relative-time": "./dist/relative-time-element.js",
17+
"./relative-time/define": "./dist/relative-time-element-define.js",
18+
"./local-time": "./dist/local-time-element.js",
19+
"./local-time/define": "./dist/local-time-element-define.js",
20+
"./time-ago": "./dist/time-ago-element.js",
21+
"./time-ago/define": "./dist/time-ago-element-define.js",
22+
"./time-until": "./dist/time-until-element.js",
23+
"./time-until/define": "./dist/time-until-element-define.js"
24+
},
1325
"scripts": {
1426
"clean": "rm -rf dist",
1527
"lint": "eslint . --ext .js,.ts && tsc --noEmit",

src/index.ts

Lines changed: 4 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,6 @@
1-
import LocalTimeElement from './local-time-element.js'
2-
import RelativeTimeElement from './relative-time-element.js'
3-
import TimeAgoElement from './time-ago-element.js'
4-
import TimeUntilElement from './time-until-element.js'
5-
6-
const root = (typeof globalThis !== 'undefined' ? globalThis : window) as typeof window
7-
try {
8-
customElements.define('relative-time', RelativeTimeElement)
9-
root.RelativeTimeElement = RelativeTimeElement
10-
} catch (e: unknown) {
11-
if (!(e instanceof DOMException && e.name === 'NotSupportedError') && !(e instanceof ReferenceError)) throw e
12-
}
13-
14-
try {
15-
customElements.define('local-time', LocalTimeElement)
16-
root.LocalTimeElement = LocalTimeElement
17-
} catch (e: unknown) {
18-
if (!(e instanceof DOMException && e.name === 'NotSupportedError') && !(e instanceof ReferenceError)) throw e
19-
}
20-
21-
try {
22-
customElements.define('time-ago', TimeAgoElement)
23-
root.TimeAgoElement = TimeAgoElement
24-
} catch (e: unknown) {
25-
if (!(e instanceof DOMException && e.name === 'NotSupportedError') && !(e instanceof ReferenceError)) throw e
26-
}
27-
28-
try {
29-
customElements.define('time-until', TimeUntilElement)
30-
root.TimeUntilElement = TimeUntilElement
31-
} catch (e: unknown) {
32-
if (!(e instanceof DOMException && e.name === 'NotSupportedError') && !(e instanceof ReferenceError)) throw e
33-
}
34-
35-
declare global {
36-
interface Window {
37-
RelativeTimeElement: typeof RelativeTimeElement
38-
LocalTimeElement: typeof LocalTimeElement
39-
TimeAgoElement: typeof TimeAgoElement
40-
TimeUntilElement: typeof TimeUntilElement
41-
}
42-
interface HTMLElementTagNameMap {
43-
'relative-time': RelativeTimeElement
44-
'local-time': LocalTimeElement
45-
'time-ago': TimeAgoElement
46-
'time-until': TimeUntilElement
47-
}
48-
}
1+
import LocalTimeElement from './local-time-element-define.js'
2+
import RelativeTimeElement from './relative-time-element-define.js'
3+
import TimeAgoElement from './time-ago-element-define.js'
4+
import TimeUntilElement from './time-until-element-define.js'
495

506
export {LocalTimeElement, RelativeTimeElement, TimeAgoElement, TimeUntilElement}

src/local-time-element-define.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import LocalTimeElement from './local-time-element.js'
2+
3+
const root = (typeof globalThis !== 'undefined' ? globalThis : window) as typeof window
4+
try {
5+
customElements.define('local-time', LocalTimeElement)
6+
root.LocalTimeElement = LocalTimeElement
7+
} catch (e: unknown) {
8+
if (
9+
!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&
10+
!(e instanceof ReferenceError)
11+
) {
12+
throw e
13+
}
14+
}
15+
16+
declare global {
17+
interface Window {
18+
LocalTimeElement: typeof LocalTimeElement
19+
}
20+
interface HTMLElementTagNameMap {
21+
'local-time': LocalTimeElement
22+
}
23+
}
24+
25+
export default LocalTimeElement
26+
export * from './local-time-element.js'
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import RelativeTimeElement from './relative-time-element.js'
2+
3+
const root = (typeof globalThis !== 'undefined' ? globalThis : window) as typeof window
4+
try {
5+
customElements.define('relative-time', RelativeTimeElement)
6+
root.RelativeTimeElement = RelativeTimeElement
7+
} catch (e: unknown) {
8+
if (
9+
!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&
10+
!(e instanceof ReferenceError)
11+
) {
12+
throw e
13+
}
14+
}
15+
16+
declare global {
17+
interface Window {
18+
RelativeTimeElement: typeof RelativeTimeElement
19+
}
20+
interface HTMLElementTagNameMap {
21+
'relative-time': RelativeTimeElement
22+
}
23+
}
24+
25+
export default RelativeTimeElement
26+
export * from './relative-time-element.js'

src/time-ago-element-define.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import TimeAgoElement from './time-ago-element.js'
2+
3+
const root = (typeof globalThis !== 'undefined' ? globalThis : window) as typeof window
4+
try {
5+
customElements.define('time-ago', TimeAgoElement)
6+
root.TimeAgoElement = TimeAgoElement
7+
} catch (e: unknown) {
8+
if (
9+
!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&
10+
!(e instanceof ReferenceError)
11+
) {
12+
throw e
13+
}
14+
}
15+
16+
declare global {
17+
interface Window {
18+
TimeAgoElement: typeof TimeAgoElement
19+
}
20+
interface HTMLElementTagNameMap {
21+
'time-ago': TimeAgoElement
22+
}
23+
}
24+
25+
export default TimeAgoElement
26+
export * from './time-ago-element.js'

src/time-until-element-define.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import TimeUntilElement from './time-until-element.js'
2+
3+
const root = (typeof globalThis !== 'undefined' ? globalThis : window) as typeof window
4+
try {
5+
customElements.define('time-until', TimeUntilElement)
6+
root.TimeUntilElement = TimeUntilElement
7+
} catch (e: unknown) {
8+
if (
9+
!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&
10+
!(e instanceof ReferenceError)
11+
) {
12+
throw e
13+
}
14+
}
15+
16+
declare global {
17+
interface Window {
18+
TimeUntilElement: typeof TimeUntilElement
19+
}
20+
interface HTMLElementTagNameMap {
21+
'time-until': TimeUntilElement
22+
}
23+
}
24+
25+
export default TimeUntilElement
26+
export * from './time-until-element.js'

0 commit comments

Comments
 (0)