Sha256: 2e015e33679fc636f8143f1f08f6e7e1dbc30f46b4c39e431e2b6f30da93182b

Contents?: true

Size: 1.82 KB

Versions: 27

Compression:

Stored size: 1.82 KB

Contents

module LucidMaterial
  module App
    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 = Opal.global.Mui.createMuiTheme();
          base.themed_react_component = function(props) {
            let opag = Opal.global;
            let classes = null;
            let theme = opag.MuiStyles.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 = opag.MuiStyles.makeStyles(styles);
              }
              classes = base.use_styles();
            }
            let themed_classes_props = Object.assign({}, props, { classes: classes, theme: theme });
            return opag.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.MuiStyles.ThemeProvider, { theme: base.jss_theme }, themed_component);
          }
          base.react_component.displayName = #{component_name};
        }
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
isomorfeus-react-16.13.6 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.13.5 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.13.4 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.13.3 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.13.2 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.13.1 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.13.0 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.24 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.23 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.22 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.21 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.20 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.19 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.18 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.17 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.16 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.15 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.14 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.13 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb
isomorfeus-react-16.12.12 lib/isomorfeus_react_material/lucid_material/app/native_component_constructor.rb