Code Monkey home page Code Monkey logo

gwt-views's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gwt-views's Issues

Support "Google-Style" History URLs

It would be cool if gwt-views (optionaly) support "Google-Style" History URLs:

They work with "segments" instead of "key-value" parameters.

It would be very easy to implement: Somewhere the user has to define with style he wants, depending on that style, the URLToken only need to parse the url in a different style.

I've tried a "dirty hack" to implement it by overriding URLToken. This doesn't work cause com.github.gilbertotorrezan.gwtviews.rebind.NavigationManagerGenerator uses URLToken instead of my "overriden" URLToken class (lines 100 / 166 / 279 / 184) ;)

This is my "dirty hack" i've tried:

public class SegmentsURLToken extends URLToken {

    private List<String> fSegments;

    /**
     * Creates a new URLToken using the current state of the application.
     */
    public SegmentsURLToken() {
        super();
    }

    /**
     * Creates a new URLToken using the provided token.
     * 
     * @param completeToken
     *            The History token to be parsed
     */
    public SegmentsURLToken(String completeToken) {
        super(completeToken);
    }

    /**
     * Clones a URLToken, copying the id and all parameters.
     * 
     * @see #clone()
     */
    public SegmentsURLToken(URLToken source) {
        super(source);
        if (source instanceof SegmentsURLToken) {
            this.fSegments = new ArrayList<>(((SegmentsURLToken) source).getSegments());
        }
    }

    @Override
    public void setToken(String completeToken) {
        this.fSegments = new ArrayList<>();
        String[] splitted = completeToken.split("/"); //$NON-NLS-1$
        if (splitted.length > 0) {
            setId(splitted[0]);
            for (int i = 1; i < splitted.length; i++) {
                this.fSegments.add(splitted[i]);
            }
        } else {
            super.setToken(completeToken);
        }
    }

    public List<String> getSegments() {
        return this.fSegments;
    }

    @Override
    public String toString() {
        if (this.fSegments != null && this.fSegments.size() > 0) {
            StringBuilder builder = new StringBuilder(getId());

            for (String segment : this.fSegments) {
                builder.append("/").append(segment); //$NON-NLS-1$
            }

            return builder.toString();
        }
        return super.toString();
    }

}

Dependency injection without default constructor

In this view I don't have a default constructor but I'm using constructor injection.

@View(value = "login", publicAccess = true, defaultView = true, usesViewContainer = false,
        injector = BackOfficeInjector.class, injectorMethod = "getLoginView")
public class LoginView extends Composite {
    @Inject
    public LoginView(Alert alert) {
        Binder ui = GWT.create(Binder.class);
        initWidget(ui.createAndBindUi(this));
    }
Compiling module pt.ipb.candidaturas.bo.BackOffice
[INFO]          Computing all possible rebind results for 'com.github.gilbertotorrezan.gwtviews.client.INavigationManager'
[INFO]             Rebinding com.github.gilbertotorrezan.gwtviews.client.INavigationManager
[INFO]                Invoking generator com.github.gilbertotorrezan.gwtviews.rebind.NavigationManagerGenerator
[INFO]                   [WARN] LoginView must have an empty constructor to be a valid View.
[INFO]                   [ERROR] No default view page defined!
[INFO]          [ERROR] Errors in 'com/github/gilbertotorrezan/gwtviews/client/NavigationManager.java'
[INFO]             [ERROR] Line 40: Failed to resolve 'com.github.gilbertotorrezan.gwtviews.client.INavigationManager' via deferred binding
[INFO]          [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
[INFO]             [WARN] com.github.gilbertotorrezan.gwtviews.client.INavigationManagerImpl
[INFO]          Unification traversed 11291 fields and methods and 957 types. 932 are considered part of the current module and 932 had all of their fields and methods traversed.

Use the not found view in different view containers

Hi,

I have two view containers, one for users and one for admins. Both containers have different designs.
I have a not found view that is displayed inside the default container (the container for users). How can I have the same view displayed inside the admin container? Can I use the same view in different containers?

@View(value = "404", notFoundView = true)
public class NotFoundView extends Composite {
}

Thanks

MainViewContainer is not a valid ViewContainer

Hi,

Here's another one. I cannot set a viewContainer like this

@View(value = "home", injector = DemoInjector.class, viewContainer = MainViewContainer.class)

The NavigationManagerGenerator complains about not being a valid ViewContainer.

INFO] GET /recompile/demo
[INFO]    Job com.github.natros.gwtviews.demo.Demo_1_0
[INFO]       starting job: com.github.natros.gwtviews.demo.Demo_1_0
[INFO]       Compiling module com.github.natros.gwtviews.demo.Demo
[INFO]          Computing all possible rebind results for 'com.github.gilbertotorrezan.gwtviews.client.INavigationManager'
[INFO]             Rebinding com.github.gilbertotorrezan.gwtviews.client.INavigationManager
[INFO]                Invoking generator com.github.gilbertotorrezan.gwtviews.rebind.NavigationManagerGenerator
[INFO]                   [ERROR] com.github.natros.gwtviews.demo.client.views.MainViewContainer is not a valid ViewContainer for View com.github.natros.gwtviews.demo.client.views.home.HomeView.
[INFO]          [ERROR] Errors in 'com/github/gilbertotorrezan/gwtviews/client/NavigationManager.java'
[INFO]             [ERROR] Line 40: Failed to resolve 'com.github.gilbertotorrezan.gwtviews.client.INavigationManager' via deferred binding
[INFO]          [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
[INFO]             [WARN] com.github.gilbertotorrezan.gwtviews.client.INavigationManagerImpl
[INFO]          Unification traversed 16271 fields and methods and 1534 types. 1501 are considered part of the current module and 1501 had all of their fields and methods traversed.
[INFO]       [ERROR] Compiler returned false
[INFO]       [WARN] recompile failed
[INFO]       [WARN] continuing to serve previous version

You can test here
https://github.com/natros/gwt-views-demo

Injector Access

Hi Gilberto, I've got a situation using gwt-views and I'm wondering if you could comment. The short version is that I think I need access to the Ginjector through a static method, but here's the situation:

  • My site uses cookies to persist a device Id and token.
  • When the user returns to the site, these are sent to the server to exchange for a user.
  • The user is returned to the client and accessible throughout the application in the UserPresenceManager.

Previously, I created a static injector in my EntryPoint and did this stuff there. I'd like to follow the same pattern, but I can't seem to access or set the injector that is used to manage set the components of the views.

Do you have any ideas about I could accomplish a similar thing and still be within the framework?

Thanks!

E

NPE injecting a ViewContainer

Dependency injection it's not working for ViewContainer

@ViewContainer(injector = DemoInjector.class)
public class MainViewContainer extends Composite implements HasViews {
}
[INFO]    Job com.github.natros.gwtviews.demo.Demo_1_0
[INFO]       starting job: com.github.natros.gwtviews.demo.Demo_1_0
[INFO]       Compiling module com.github.natros.gwtviews.demo.Demo
[INFO]          Computing all possible rebind results for 'com.github.gilbertotorrezan.gwtviews.client.INavigationManagerImpl.MainViewContainerPresenter'
[INFO]             Rebinding com.github.gilbertotorrezan.gwtviews.client.INavigationManagerImpl.MainViewContainerPresenter
[INFO]                Invoking generator com.github.gilbertotorrezan.gwtviews.rebind.PresenterGenerator
[INFO]                   [ERROR] Error loading the injector class "com.github.natros.gwtviews.demo.client.gin.DemoInjector": java.lang.NullPointerException

the view is null in PresentGenerator

injectorMethod = getInjectorMethod(logger, injectorType, view.injectorMethod(), className);

Just in case you want to try:
https://github.com/natros/gwt-views-demo

Thank you.

com.arcbees.analytics.shared.GaAccount is not a binding annotation. Please annotate it with @BindingAnnotation.

Hi,

I can't use maven so i copied all the dependencies to the classpath:

image

But finally SDM output this error and i don't know how to fix it:

com.arcbees.analytics.shared.GaAccount is not a binding annotation. Please annotate it with @BindingAnnotation.

Here is SDL log:

Turning off precompile in incremental mode.
Super Dev Mode starting up
   workDir: c:\dev\superdevmodeworkdir
2018-08-24 20:17:36.313:INFO::main: Logging initialized @1413ms
   Loading Java files in es.mycompany.netcom.mobile.Mobile.
   Ignored 20 units with compilation errors in first pass.
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
   Module setup completed in 2580 ms
   [WARN] unable to delete 'c:\dev\superdevmodeworkdir\es.mycompany.netcom.mobile.Mobile\compile-1' (skipped)
   [ERROR] unable to create directory: c:\dev\superdevmodeworkdir\es.mycompany.netcom.mobile.Mobile\compile-1
   Loading Java files in es.mycompany.netcom.mobile.Mobile.
   Ignored 20 units with compilation errors in first pass.
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
   Module setup completed in 827 ms
2018-08-24 20:17:38.811:INFO:oejs.Server:main: jetty-9.2.z-SNAPSHOT
2018-08-24 20:17:38.830:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@63c274b4{/,null,AVAILABLE}
2018-08-24 20:17:38.842:INFO:oejs.ServerConnector:main: Started ServerConnector@611ca657{HTTP/1.1}{127.0.0.1:9876}
2018-08-24 20:17:38.842:INFO:oejs.Server:main: Started @3944ms

The code server is ready at http://127.0.0.1:9876/
GET /recompile/mobile
   Job es.mycompany.netcom.mobile.Mobile_1_0
      starting job: es.mycompany.netcom.mobile.Mobile_1_0
      [ERROR] unable to create directory: c:\dev\superdevmodeworkdir\es.mycompany.netcom.mobile.Mobile\compile-2
      binding: user.agent=safari
      Compiling module es.mycompany.netcom.mobile.Mobile
         Ignored 20 units with compilation errors in first pass.
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
         Computing all possible rebind results for 'com.github.gilbertotorrezan.gwtviews.client.analytics.UniversalAnalyticsTrackerGinjector'
            Rebinding com.github.gilbertotorrezan.gwtviews.client.analytics.UniversalAnalyticsTrackerGinjector
               Invoking generator com.google.gwt.inject.rebind.GinjectorGenerator
                  [ERROR] An exception was caught and reported. Message: com.arcbees.analytics.shared.GaAccount is not a binding annotation. Please annotate it with @BindingAnnotation.
java.lang.IllegalArgumentException: com.arcbees.analytics.shared.GaAccount is not a binding annotation. Please annotate it with @BindingAnnotation.
	at com.google.inject.internal.util.$Preconditions.checkArgument(Preconditions.java:113)
	at com.google.inject.Key.ensureIsBindingAnnotation(Key.java:366)
	at com.google.inject.Key.strategyFor(Key.java:353)
	at com.google.inject.Key.get(Key.java:264)
	at com.google.inject.internal.AbstractBindingBuilder.annotatedWithInternal(AbstractBindingBuilder.java:74)
	at com.google.inject.internal.ConstantBindingBuilderImpl.annotatedWith(ConstantBindingBuilderImpl.java:44)
	at com.google.gwt.inject.rebind.adapter.AnnotatedConstantBindingBuilderAdapter.annotatedWith(AnnotatedConstantBindingBuilderAdapter.java:33)
	at com.arcbees.analytics.client.AnalyticsModule.configure(AnalyticsModule.java:125)
	at com.google.gwt.inject.client.AbstractGinModule.configure(AbstractGinModule.java:46)
	at com.google.gwt.inject.rebind.adapter.GinModuleAdapter.configure(GinModuleAdapter.java:57)
	at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
	at com.google.gwt.inject.rebind.adapter.BinderAdapter.install(BinderAdapter.java:74)
	at com.google.gwt.inject.client.AbstractGinModule.install(AbstractGinModule.java:83)
	at com.github.gilbertotorrezan.gwtviews.client.analytics.UniversalAnalyticsTrackerModule.configure(UniversalAnalyticsTrackerModule.java:43)
	at com.google.gwt.inject.client.AbstractGinModule.configure(AbstractGinModule.java:46)
	at com.google.gwt.inject.rebind.adapter.GinModuleAdapter.configure(GinModuleAdapter.java:57)
	at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
	at com.google.inject.spi.Elements.getElements(Elements.java:101)
	at com.google.inject.spi.Elements.getElements(Elements.java:92)
	at com.google.gwt.inject.rebind.BindingsProcessor.createBindingsForModules(BindingsProcessor.java:201)
	at com.google.gwt.inject.rebind.BindingsProcessor.process(BindingsProcessor.java:102)
	at com.google.gwt.inject.rebind.GinjectorGeneratorImpl.generate(GinjectorGeneratorImpl.java:79)
	at com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:74)
	at com.google.gwt.core.ext.IncrementalGenerator.generateNonIncrementally(IncrementalGenerator.java:40)
	at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:745)
	at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:103)
	at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
	at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:262)
	at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:251)
	at com.google.gwt.dev.PrecompilationContextCreator$1.getAllPossibleRebindAnswers(PrecompilationContextCreator.java:86)
	at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.createStaticRebindExpression(UnifyAst.java:519)
	at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.createRebindExpression(UnifyAst.java:487)
	at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.maybeHandleMagicMethodCall(UnifyAst.java:415)
	at com.google.gwt.dev.jjs.impl.UnifyAst$UnifyVisitor.visit(UnifyAst.java:402)
	at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:265)
	at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
	at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:118)
	at com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:76)
	at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
	at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:118)
	at com.google.gwt.dev.jjs.ast.JDeclarationStatement.traverse(JDeclarationStatement.java:49)
	at com.google.gwt.dev.jjs.ast.JModVisitor$ListContext.traverse(JModVisitor.java:88)
	at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemove(JModVisitor.java:331)
	at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:94)
	at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
	at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:139)
	at com.google.gwt.dev.jjs.ast.JIfStatement.traverse(JIfStatement.java:53)
	at com.google.gwt.dev.jjs.ast.JModVisitor$ListContext.traverse(JModVisitor.java:88)
	at com.google.gwt.dev.jjs.ast.JModVisitor.acceptWithInsertRemove(JModVisitor.java:331)
	at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:94)
	at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
	at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:139)
	at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:135)
	at com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:83)
	at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
	at com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:786)
	at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:778)
	at com.google.gwt.dev.jjs.ast.JModVisitor.traverse(JModVisitor.java:361)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:273)
	at com.google.gwt.dev.jjs.ast.JModVisitor.accept(JModVisitor.java:265)
	at com.google.gwt.dev.jjs.impl.UnifyAst.mainLoop(UnifyAst.java:1401)
	at com.google.gwt.dev.jjs.impl.UnifyAst.exec(UnifyAst.java:896)
	at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.unifyJavaAst(JavaToJavaScriptCompiler.java:1410)
	at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.constructJavaAst(JavaToJavaScriptCompiler.java:1222)
	at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:1140)
	at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:255)
	at com.google.gwt.dev.Precompile.precompile(Precompile.java:255)
	at com.google.gwt.dev.Precompile.precompile(Precompile.java:202)
	at com.google.gwt.dev.Precompile.precompile(Precompile.java:143)
	at com.google.gwt.dev.Compiler.compile(Compiler.java:204)
	at com.google.gwt.dev.codeserver.Recompiler.doCompile(Recompiler.java:362)
	at com.google.gwt.dev.codeserver.Recompiler.compile(Recompiler.java:175)
	at com.google.gwt.dev.codeserver.Recompiler.recompile(Recompiler.java:134)
	at com.google.gwt.dev.codeserver.Outbox.recompile(Outbox.java:135)
	at com.google.gwt.dev.codeserver.JobRunner.recompile(JobRunner.java:113)
	at com.google.gwt.dev.codeserver.JobRunner.access$000(JobRunner.java:37)
	at com.google.gwt.dev.codeserver.JobRunner$2.run(JobRunner.java:90)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
         [ERROR] Errors in 'com/github/gilbertotorrezan/gwtviews/client/analytics/UniversalAnalyticsTracker.java'
            [ERROR] Line 49: Failed to resolve 'com.github.gilbertotorrezan.gwtviews.client.analytics.UniversalAnalyticsTrackerGinjector' via deferred binding
         [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
            [WARN] com.github.gilbertotorrezan.gwtviews.client.analytics.com_github_gilbertotorrezan_gwtviews_client_analytics_UniversalAnalyticsTrackerGinjectorImpl
         Computing all possible rebind results for 'es.mycompany.netcom.mobile.client.about.AboutView.AboutViewUiBinder'
            Rebinding es.mycompany.netcom.mobile.client.about.AboutView.AboutViewUiBinder
               Invoking generator com.google.gwt.uibinder.rebind.UiBinderGenerator
                  [ERROR] Cannot parse value: "green darken-3" as type gwt.material.design.client.constants.Color: <m:MaterialLink href='https://github.com/gilberto-torrezan/feel-vision' iconType='LINK' target='_blank' text='Project on GitHub' textColor='green darken-3'> (:49)
         [ERROR] Errors in 'es/mycompany/netcom/mobile/client/about/AboutView.java'
            [ERROR] Line 22: Failed to resolve 'es.mycompany.netcom.mobile.client.about.AboutView.AboutViewUiBinder' via deferred binding
         Computing all possible rebind results for 'es.mycompany.netcom.mobile.client.FeelVisionContainer.FeelVisionContainerUiBinder'
            Rebinding es.mycompany.netcom.mobile.client.FeelVisionContainer.FeelVisionContainerUiBinder
               Invoking generator com.google.gwt.uibinder.rebind.UiBinderGenerator
                  [ERROR] Cannot parse value: "green darken-3" as type gwt.material.design.client.constants.Color: <m:MaterialNavBar activates='sideBar' addStyleNames='{style.navBar}' backgroundColor='green darken-3' ui:field='navBar'> (:60)
         [ERROR] Errors in 'es/mycompany/netcom/mobile/client/FeelVisionContainer.java'
            [ERROR] Line 28: Failed to resolve 'es.mycompany.netcom.mobile.client.FeelVisionContainer.FeelVisionContainerUiBinder' via deferred binding
         [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
            [WARN] es.mycompany.netcom.mobile.client.about.AboutView_AboutViewUiBinderImpl
            [WARN] es.mycompany.netcom.mobile.client.FeelVisionContainer_FeelVisionContainerUiBinderImpl
         Unification traversed 2260 fields and methods and 878 types. 65 are considered part of the current module and 108 had all of their fields and methods traversed.
         [WARN] Some stale types ([es.mycompany.netcom.mobile.client.MobileEntryPoint$11, es.mycompany.netcom.mobile.client.MobileEntryPoint$lambda$2$Type, es.mycompany.netcom.mobile.client.MobileEntryPoint$10, es.mycompany.netcom.mobile.client.MobileEntryPoint$9, es.mycompany.netcom.mobile.client.MobileEntryPoint$8, es.mycompany.netcom.mobile.client.MobileEntryPoint$7, es.mycompany.netcom.mobile.client.MobileEntryPoint$6, es.mycompany.netcom.mobile.client.MobileEntryPoint$5, es.mycompany.netcom.mobile.client.MobileEntryPoint$4, es.mycompany.netcom.mobile.client.MobileEntryPoint$lambda$1$Type, es.mycompany.netcom.mobile.client.MobileEntryPoint$3, es.mycompany.netcom.mobile.client.MobileEntryPoint$2, es.mycompany.netcom.mobile.client.MobileEntryPoint$1, es.mycompany.netcom.mobile.client.MobileEntryPoint$lambda$3$Type, es.mycompany.netcom.mobile.client.MobileEntryPoint$lambda$0$Type]) were not reprocessed as was expected. This is either a compiler bug or a Generator has legitimately stopped creating these types.
      [ERROR] Compiler returned false
      [WARN] recompile failed
      [WARN] continuing to serve previous version

Can you get me some help here please ?

gwt-user 2.6 via Gradle

Hello,

Using gradle, gwt-user (v2.6) gets pulled into my classpath, I believe this is from the Universal Analytics dependency. I can exclude it manually, but it creates a nasty conflict when running. It takes a minute to track down.

I was wondering if we could decouple this in the next build? Especially with 2.8 so close!

Thanks,

E

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.