Skip to content

Commit bf38ede

Browse files
committed
router: get ride of safeMakeEvent for IE
1 parent b73b2c7 commit bf38ede

3 files changed

Lines changed: 21 additions & 43 deletions

File tree

src/React.res

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ module Context = {
8282
external createContext: 'a => Context.t<'a> = "createContext"
8383

8484
@module("react")
85-
external forwardRef: (('props, nullable<ref<'a>>) => element) => component<'props> =
86-
"forwardRef"
85+
external forwardRef: (('props, nullable<ref<'a>>) => element) => component<'props> = "forwardRef"
8786

8887
@module("react")
8988
external memo: component<'props> => component<'props> = "memo"
@@ -265,11 +264,8 @@ external useImperativeHandle: (nullable<ref<'value>>, unit => 'value, 'deps) =>
265264
"useImperativeHandle"
266265

267266
@module("react")
268-
external useImperativeHandle0: (
269-
nullable<ref<'value>>,
270-
unit => 'value,
271-
@as(json`[]`) _,
272-
) => unit = "useImperativeHandle"
267+
external useImperativeHandle0: (nullable<ref<'value>>, unit => 'value, @as(json`[]`) _) => unit =
268+
"useImperativeHandle"
273269

274270
@module("react")
275271
external useImperativeHandle1: (nullable<ref<'value>>, unit => 'value, array<'a>) => unit =
@@ -284,11 +280,8 @@ external useImperativeHandle3: (nullable<ref<'value>>, unit => 'value, ('a, 'b,
284280
"useImperativeHandle"
285281

286282
@module("react")
287-
external useImperativeHandle4: (
288-
nullable<ref<'value>>,
289-
unit => 'value,
290-
('a, 'b, 'c, 'd),
291-
) => unit = "useImperativeHandle"
283+
external useImperativeHandle4: (nullable<ref<'value>>, unit => 'value, ('a, 'b, 'c, 'd)) => unit =
284+
"useImperativeHandle"
292285

293286
@module("react")
294287
external useImperativeHandle5: (

src/RescriptReactRouter.res

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,12 @@ external pushState: (Dom.history, @as(json`null`) _, @as("") _, ~href: string) =
2929
external replaceState: (Dom.history, @as(json`null`) _, @as("") _, ~href: string) => unit =
3030
"replaceState"
3131

32-
@val external event: 'a = "Event"
33-
34-
@new external makeEventIE11Compatible: string => Dom.event = "Event"
35-
36-
@val @scope("document")
37-
external createEventNonIEBrowsers: string => Dom.event = "createEvent"
38-
39-
@send
40-
external initEventNonIEBrowsers: (Dom.event, string, bool, bool) => unit = "initEvent"
41-
42-
let safeMakeEvent = eventName =>
43-
if typeof(event) == #function {
44-
makeEventIE11Compatible(eventName)
45-
} else {
46-
let event = createEventNonIEBrowsers("Event")
47-
initEventNonIEBrowsers(event, eventName, true, true)
48-
event
49-
}
32+
type makeEventOptions = {
33+
bubbles?: bool,
34+
cancelable?: bool,
35+
composed?: bool,
36+
}
37+
@new external makeEvent: (string, ~options: makeEventOptions=?) => Dom.event = "Event"
5038

5139
/* This is copied from array.ml. We want to cut dependencies for rescript-react so
5240
that it's friendlier to use in size-constrained codebases */
@@ -129,7 +117,7 @@ let push = path =>
129117
| (_, None) => ()
130118
| (Some(history: Dom.history), Some(window: Dom.window)) =>
131119
pushState(history, ~href=path)
132-
dispatchEvent(window, safeMakeEvent("popstate"))
120+
dispatchEvent(window, makeEvent("popstate", ~options={bubbles: true, cancelable: true}))
133121
}
134122

135123
let replace = path =>
@@ -138,7 +126,7 @@ let replace = path =>
138126
| (_, None) => ()
139127
| (Some(history: Dom.history), Some(window: Dom.window)) =>
140128
replaceState(history, ~href=path)
141-
dispatchEvent(window, safeMakeEvent("popstate"))
129+
dispatchEvent(window, makeEvent("popstate", ~options={bubbles: true, cancelable: true}))
142130
}
143131

144132
type url = {

src/RescriptReactRouter.res.js

Lines changed: 8 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)