Contribute requirejs.config.paths to ModuleManager
Svein-Erik Løken <[email protected]>
| Newsgroups | gmane.comp.java.tapestry.user |
|---|---|
| Message-ID | <DB3PR08MB02832F5DA262EA972CEF8455D2260@DB3PR08MB0283.eurprd08.prod.outlook.com> |
Trying to use TypeScript and React with Tapestry:
In TypeScript I need to use: import * as React from "react";
I would like to load react: react.min, so I have to set paths: {...}
The configuration should be set at startup, but I cannot figure how to do it. I can set requirejs.config.shim, but not paths.
I tried to load it with @Contribute(ModuleManager.class), but could not figure out how.
PSEUDO CODE
@Contribute(ModuleManager.class)
public static void setupMyBaseModules(MappedConfiguration<String, Object> configuration) {
JSONObject pathsConfig = new JSONObject(
"react", "react.min",
"react-dom", "react-dom.min"
);
AMDResourceConfiguration paths = new AMDResourceConfiguration("paths", pathsConfig);
configuration.add(null, new JavaScriptModuleConfiguration(paths));
}
Tried to load it this way:
@Startup
public void registerToClearPlasticProxyFactoryOnInvalidation(JavaScriptSupport javaScriptSupport) {
ModuleConfigurationCallback callback = new
ModuleConfigurationCallback() {
@Override
public JSONObject configure(JSONObject configuration) {
configuration.put("paths",
new JSONObject(
"react", "react.min",
"react-dom", "react-dom.min"
));
return configuration;
}
};
javaScriptSupport.addModuleConfigurationCallback(callback);
}
[ERROR] ioc.Registry org.apache.tapestry5.ioc.util.UnknownValueException: No object of type org.apache.tapestry5.services.javascript.JavaScriptSupport is available from the Environment.
Now I am loading the configuration in @SetupRender, but it should be loaded globally.
@Inject
JavaScriptSupport javaScriptSupport;
private static final ModuleConfigurationCallback CALLBACK = new
ModuleConfigurationCallback() {
@Override
public JSONObject configure(JSONObject configuration) {
configuration.put("paths",
new JSONObject(
"react", "react.min",
"react-dom", "react-dom.min"
));
return configuration;
}
};
@SetupRender
public void configureRequireJS() {
javaScriptSupport.addModuleConfigurationCallback(CALLBACK);
}
Can this be configuration be contribute to the ModuleManager.class? I think this should be supported in Tapestry.
S-E