Sha256: 432b3034b729b616bf8f76b568277dd50eaa6a7f5bf11a0d5ed530d044580e90

Contents?: true

Size: 1.69 KB

Versions: 9

Compression:

Stored size: 1.69 KB

Contents

module LucidApp
  module NativeComponentConstructor
    # for should_component_update we apply ruby semantics for comparing props
    # to do so, we convert the props to ruby hashes and then compare
    # this makes sure, that for example rubys Nil object gets handled properly
    def self.extended(base)
      component_name = base.to_s + 'Wrapper'
      theme_component_name = base.to_s + 'ThemeWrapper'
      # language=JS
      %x{
        base.jss_theme = {};
        base.themed_react_component = function(props) {
          let classes = null;
          let theme = Opal.global.ReactJSS.useTheme();
          if (base.jss_styles) {
            if (!base.use_styles || (Opal.Isomorfeus.development && Opal.Isomorfeus.development !== nil)) {
              let styles;
              if (typeof base.jss_styles === 'function') { styles = base.jss_styles(theme); }
              else { styles = base.jss_styles; }
              base.use_styles = Opal.global.ReactJSS.createUseStyles(styles);
            }
            classes = base.use_styles();
          }
          let themed_classes_props = Object.assign({}, props, { classes: classes, theme: theme });
          return Opal.global.React.createElement(base.lucid_react_component, themed_classes_props);
        }
        base.themed_react_component.displayName = #{theme_component_name};
        base.react_component = function(props) {
          let themed_component = Opal.global.React.createElement(base.themed_react_component, props);
          return Opal.global.React.createElement(Opal.global.ReactJSS.ThemeProvider, { theme: base.jss_theme }, themed_component);
        }
        base.react_component.displayName = #{component_name};
      }
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
isomorfeus-react-16.12.4 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.12.3 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.12.2 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.12.1 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.12.0 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.11.4 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.11.3 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.11.2 lib/lucid_app/native_component_constructor.rb
isomorfeus-react-16.11.1 lib/lucid_app/native_component_constructor.rb