Marc Knaup
11/11/2020, 5:01 PM@JsModule("@emotion/stylis")
@JsNonModule
external class Stylis(
options: StylisOptions = definedExternally,
)
val stylis = Stylis() // runtime: Stylis is not a constructor
At runtime Stylis
is actually a Module and Stylis.default
is the actual class 🤔Marc Knaup
11/11/2020, 5:05 PMBig Chungus
11/11/2020, 5:12 PMMarc Knaup
11/11/2020, 5:13 PMMarc Knaup
11/11/2020, 5:13 PMturansky
11/11/2020, 5:13 PMMarc Knaup
11/11/2020, 5:16 PM@JsName
. It changes the name of the local variable for the import, it doesn’t change what it actually imported.Big Chungus
11/11/2020, 5:20 PMMarc Knaup
11/11/2020, 5:20 PM@Js(Non)Module
on a file.
The local variable is now default
and it also tries to import .default
.Marc Knaup
11/11/2020, 5:21 PMBig Chungus
11/11/2020, 5:21 PMMarc Knaup
11/11/2020, 5:21 PMBig Chungus
11/11/2020, 5:21 PMMarc Knaup
11/11/2020, 5:21 PMBig Chungus
11/11/2020, 5:22 PMturansky
11/11/2020, 5:22 PMval module: JsClass<*> = require("@emotion/stylis").default
fun Stylis(options: StylisOptions? = null) = js("(new module(options))")
Big Chungus
11/11/2020, 5:22 PMturansky
11/11/2020, 5:22 PMMarc Knaup
11/11/2020, 5:23 PMMarc Knaup
11/11/2020, 5:23 PM@JsName("_default")
results in:
var _default = $module$_emotion_stylis._default;
expected:
var Stylis = $module$_emotion_stylis._default;
turansky
11/11/2020, 5:25 PMMarc Knaup
11/11/2020, 5:25 PMMarc Knaup
11/11/2020, 5:25 PMMarc Knaup
11/11/2020, 5:25 PMMarc Knaup
11/11/2020, 5:25 PMturansky
11/11/2020, 5:26 PMMarc Knaup
11/11/2020, 5:26 PMturansky
11/11/2020, 5:27 PMMarc Knaup
11/11/2020, 5:29 PMturansky
11/11/2020, 5:31 PMturansky
11/11/2020, 5:34 PM@JsModule("@emotion/stylis")
@JsNonModule
external class Stylis(
options: StylisOptions = definedExternally,
)
// quite an elaborate hack
fun fixStylis() {
js("Stylis = Stylis.default")
}
Marc Knaup
11/11/2020, 5:35 PMturansky
11/11/2020, 5:43 PMStylis
can kill WA 🙂Marc Knaup
11/11/2020, 5:44 PMturansky
11/11/2020, 5:44 PMMarc Knaup
11/11/2020, 5:44 PMturansky
11/11/2020, 5:45 PMAnd how does it affect optimizations?Webpack optimization?
Marc Knaup
11/11/2020, 5:46 PMMarc Knaup
11/11/2020, 5:51 PMMarc Knaup
11/11/2020, 5:55 PMStylis = Stylis.default
workaround until KT-41650 is solved. There simply isn’t any other workaround apart from modifying the Stylis package itself.turansky
11/11/2020, 7:39 PMJS minification for exampleIt my examples it works for
commonjs
Posibly such logic not supported in es modules (because sideeffect). But es modules still not supported 😞turansky
11/12/2020, 2:47 AM