New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ion-router

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ion-router - npm Package Compare versions

Comparing version 0.12.0 to 0.13.0

77

docs/md/README.md

@@ -28,2 +28,3 @@ <img src='ion-router.png' alt='Ion Router Logo' width='300px'>

* [Explicitly changing URL](#explicitly-changing-url)
* [Animating page changes](#animating-page-changes)
* [Why a new router?](#why-a-new-router)

@@ -728,2 +729,78 @@ * [Principles](#principles)

## Animating page changes
ion-router makes animating page changes possible and is not opinionated about the
animation library. To enable animations, pass in the animating component
as a wrapper. For example, with ReactCSSTransitionGroup:
```javascript
import React, { PureComponent } from 'react'
import PropTypes from 'prop-types'
import Toggle from 'ion-router/Toggle'
import ReactCSSTransitionGroup from 'react-addons-css-transition-group'
import Concert from './Concert'
import ConcertList from './ConcertList'
const ConcertToggle = Toggle(state => state.concerts.selected,
state => !state.concerts.selected || state.concerts.concerts[state.concerts.selected])
const Loading = () => <div>Loading...</div>
const wProps = {
transitionName: "concert",
transitionAppear: true,
transitionAppearTimeout: 500,
transitionEnterTimeout: 500,
transitionLeave: true,
transitionLeaveTimeout: 500,
transitionEnter: true
}
export class Tour extends PureComponent {
static propTypes = {
select: PropTypes.func.isRequired,
upcoming: PropTypes.array.isRequired
}
render() {
return (
<div className="Tour">
<div className="csq"/>
<h1 className="App-h1 shadow">Concerts</h1>
<ConcertToggle
wrapper={ReactCSSTransitionGroup}
wrapperProps={wProps}
component={Concert}
else={ConcertList}
loadingComponent={Loading}
</div>
)
}
}
```
ion-router sets the key of your component to "component", of the
else component to "else" and the loading component to "loading" to
allow the animation wrapper to easily detect when your component is
loaded or removed.
The above code renders as:
```javascript
const code = <ReactCSSTransitionGroup
transitionName="concert"
transititionAppear={true}
transitionAppearTimeout={500}
transitionEnterTimeout={500}
transitionLeave={true}
transitionLeaveTimeout={500}
transitionEnter={true}
>
<Concert key="component"/>
{/* or <ConcertList key="else"/>*/}
{/* or <Loading key="loading"/>*/}
</ReactCSSTransitionGroup>
```
## Why a new router?

@@ -730,0 +807,0 @@

@@ -7,2 +7,4 @@ 'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

@@ -20,2 +22,6 @@

var _DisplaysChildren = require('./DisplaysChildren');
var _DisplaysChildren2 = _interopRequireDefault(_DisplaysChildren);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -31,4 +37,4 @@

function NullComponent(Loading, Component, ElseComponent, debug) {
var cons = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : console;
function NullComponent(Loading, Component, ElseComponent, Wrapper, wrapperProps, debug) {
var cons = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : console;

@@ -60,4 +66,12 @@ var Toggle = function (_PureComponent) {

}
return !loadedProp ? _react2.default.createElement(Loading, nullProps) // eslint-disable-line
: nullProps['@@__isActive'] ? _react2.default.createElement(Component, nullProps) : _react2.default.createElement(ElseComponent, nullProps);
if (Wrapper === _DisplaysChildren2.default) {
return !loadedProp ? _react2.default.createElement(Loading, nullProps) // eslint-disable-line
: nullProps['@@__isActive'] ? _react2.default.createElement(Component, nullProps) : _react2.default.createElement(ElseComponent, nullProps);
}
return _react2.default.createElement(
Wrapper,
wrapperProps,
!loadedProp ? _react2.default.createElement(Loading, _extends({}, nullProps, { key: 'loading' })) // eslint-disable-line
: nullProps['@@__isActive'] ? _react2.default.createElement(Component, _extends({}, nullProps, { key: 'component' })) : _react2.default.createElement(ElseComponent, _extends({}, nullProps, { key: 'else' }))
);
}

@@ -64,0 +78,0 @@ }]);

77

lib/Toggle.js

@@ -18,2 +18,6 @@ 'use strict';

var _shallowequal = require('shallowequal');
var _shallowequal2 = _interopRequireDefault(_shallowequal);
var _DisplaysChildren = require('./DisplaysChildren');

@@ -47,2 +51,16 @@

var defaults = {
component: _DisplaysChildren2.default,
else: function _else() {
return null;
},
loadingComponent: function loadingComponent() {
return null;
},
wrapper: _DisplaysChildren2.default,
wrapperProps: {}
};
defaults.else.displayName = 'null';
defaults.loadingComponent.displayName = 'null';
exports.default = function (isActive) {

@@ -64,14 +82,2 @@ var loaded = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {

var defaults = {
component: _DisplaysChildren2.default,
else: function _else() {
return null;
},
loadingComponent: function loadingComponent() {
return null;
}
};
defaults.else.displayName = 'null';
defaults.loadingComponent.displayName = 'null';
var Toggle = function (_ReactComponent) {

@@ -88,3 +94,5 @@ _inherits(Toggle, _ReactComponent);

else: false,
loadingComponent: false
loadingComponent: false,
wrapper: false,
extra: false
};

@@ -104,3 +112,8 @@ _this.makeHOC(props);

_props$loadingCompone = props.loadingComponent,
Loading = _props$loadingCompone === undefined ? defaults.loadingComponent : _props$loadingCompone;
Loading = _props$loadingCompone === undefined ? defaults.loadingComponent : _props$loadingCompone,
_props$wrapper = props.wrapper,
Wrapper = _props$wrapper === undefined ? defaults.wrapper : _props$wrapper,
_props$wrapperProps = props.wrapperProps,
wrapperProps = _props$wrapperProps === undefined ? defaults.wrapperProps : _props$wrapperProps,
extra = _objectWithoutProperties(props, ['component', 'else', 'loadingComponent', 'wrapper', 'wrapperProps']);

@@ -110,5 +123,8 @@ this.lastComponents = {

else: ElseComponent,
loadingComponent: Loading
loadingComponent: Loading,
wrapper: Wrapper,
wrapperProps: wrapperProps,
extra: extra
};
var Switcher = (0, _NullComponent2.default)(Loading, Component, ElseComponent, debug);
var Switcher = (0, _NullComponent2.default)(Loading, Component, ElseComponent, Wrapper, wrapperProps, debug);
var HOC = connect(scaffold, undefined, undefined, { storeKey: storeKey })(Switcher);

@@ -118,3 +134,8 @@ var elseName = ElseComponent.displayName || ElseComponent.name || 'Component';

var loadingName = Loading.displayName || Loading.name || 'Component';
HOC.displayName = 'Toggle(component:' + componentName + ',else:' + elseName + ',loading:' + loadingName + ')';
var wrapperName = Wrapper.displayName || Wrapper.name || 'Component';
if (Wrapper === _DisplaysChildren2.default) {
HOC.displayName = 'Toggle(component:' + componentName + ',else:' + elseName + ',loading:' + loadingName + ')';
} else {
HOC.displayName = 'Toggle(component:' + componentName + ',else:' + elseName + ',loading:' + loadingName + '),wrapper:' + wrapperName;
}
this.HOC = HOC;

@@ -130,5 +151,9 @@ }

_newprops$loadingComp = newprops.loadingComponent,
Loading = _newprops$loadingComp === undefined ? defaults.loadingComponent : _newprops$loadingComp;
Loading = _newprops$loadingComp === undefined ? defaults.loadingComponent : _newprops$loadingComp,
_newprops$wrapper = newprops.wrapper,
Wrapper = _newprops$wrapper === undefined ? defaults.wrapper : _newprops$wrapper,
_newprops$wrapperProp = newprops.wrapperProps,
wrapperProps = _newprops$wrapperProp === undefined ? defaults.wrapperProps : _newprops$wrapperProp;
if (Component !== this.lastComponents.component || ElseComponent !== this.lastComponents.else || Loading !== this.lastComponents.loadingComponent) {
if (Component !== this.lastComponents.component || ElseComponent !== this.lastComponents.else || Loading !== this.lastComponents.loadingComponent || Wrapper !== this.lastComponents.wrapper || !(0, _shallowequal2.default)(wrapperProps, this.lastComponents.wrapperProps)) {
this.makeHOC(newprops);

@@ -146,5 +171,11 @@ }

Loading = _newprops$loadingComp2 === undefined ? defaults.loadingComponent : _newprops$loadingComp2,
children = newprops.children;
children = newprops.children,
_newprops$wrapper2 = newprops.wrapper,
Wrapper = _newprops$wrapper2 === undefined ? defaults.wrapper : _newprops$wrapper2,
_newprops$wrapperProp2 = newprops.wrapperProps,
wrapperProps = _newprops$wrapperProp2 === undefined ? defaults.wrapperProps : _newprops$wrapperProp2,
extra = _objectWithoutProperties(newprops, ['component', 'else', 'loadingComponent', 'children', 'wrapper', 'wrapperProps']);
if (Component !== this.lastComponents.component || ElseComponent !== this.lastComponents.else || Loading !== this.lastComponents.loadingComponent || children !== this.props.children) {
if (Component !== this.lastComponents.component || ElseComponent !== this.lastComponents.else || Loading !== this.lastComponents.loadingComponent || Wrapper !== this.lastComponents.wrapper || !(0, _shallowequal2.default)(wrapperProps, this.lastComponents.wrapperProps) || children !== this.props.children || !(0, _shallowequal2.default)(extra, this.lastComponents.extra)) {
this.lastComponents.extra = extra;
this.init(newprops);

@@ -165,3 +196,5 @@ return true;

children = _props.children,
props = _objectWithoutProperties(_props, ['component', 'else', 'loadingComponent', 'children']);
wrapper = _props.wrapper,
wrapperProps = _props.wrapperProps,
props = _objectWithoutProperties(_props, ['component', 'else', 'loadingComponent', 'children', 'wrapper', 'wrapperProps']);

@@ -168,0 +201,0 @@ var useProps = _extends({}, props);

{
"name": "ion-router",
"version": "0.12.0",
"version": "0.13.0",
"description": "elegant powerful routing based on the simplicity of storing url as state",

@@ -35,7 +35,7 @@ "main": "lib/index.js",

},
"homepage": "https://github.com/cellog/ion-router#readme",
"dependencies": {
"history": "^4.5.1",
"invariant": "^2.2.2",
"route-parser": "0.0.5"
"route-parser": "0.0.5",
"shallowequal": "^1.0.2"
},

@@ -90,2 +90,3 @@ "peerDependencies": {

"mocha": "^3.2.0",
"prop-types": "^15.5.10",
"raw-loader": "^0.5.1",

@@ -95,2 +96,3 @@ "react": "^15.5.4",

"react-redux": "^5.0.4",
"redux": "^3.7.2",
"rimraf": "^2.5.4",

@@ -97,0 +99,0 @@ "selenium-webdriver": "^3.0.1",

import React, { PureComponent } from 'react'
import PropTypes from 'prop-types'
export default function NullComponent(Loading, Component, ElseComponent, debug, cons = console) {
import DisplaysChildren from './DisplaysChildren'
export default function NullComponent(Loading, Component,
ElseComponent, Wrapper, wrapperProps, debug, cons = console) {
class Toggle extends PureComponent {

@@ -23,4 +26,14 @@ static propTypes = {

}
return !loadedProp ? <Loading {...nullProps} /> // eslint-disable-line
: (nullProps['@@__isActive'] ? <Component {...nullProps} /> : <ElseComponent {...nullProps} />)
if (Wrapper === DisplaysChildren) {
return !loadedProp ? <Loading {...nullProps} /> // eslint-disable-line
: (nullProps['@@__isActive'] ? <Component {...nullProps} /> : <ElseComponent {...nullProps} />)
}
return (
<Wrapper {...wrapperProps}>
{!loadedProp ? <Loading {...nullProps} key="loading" /> // eslint-disable-line
: (nullProps['@@__isActive'] ?
<Component {...nullProps} key="component" /> :
<ElseComponent {...nullProps} key="else" />)}
</Wrapper>
)
}

@@ -27,0 +40,0 @@ }

import React, { Component as ReactComponent } from 'react'
import shallowEqual from 'shallowequal'

@@ -17,2 +18,12 @@ import DisplaysChildren from './DisplaysChildren'

const defaults = {
component: DisplaysChildren,
else: () => null,
loadingComponent: () => null,
wrapper: DisplaysChildren,
wrapperProps: {},
}
defaults.else.displayName = 'null'
defaults.loadingComponent.displayName = 'null'
export default (isActive, loaded = () => true, componentLoadingMap = {}, debug = false, storeKey = 'store') => {

@@ -28,10 +39,2 @@ const scaffold = (state, rProps) => {

const defaults = {
component: DisplaysChildren,
else: () => null,
loadingComponent: () => null
}
defaults.else.displayName = 'null'
defaults.loadingComponent.displayName = 'null'
class Toggle extends ReactComponent {

@@ -44,3 +47,5 @@

else: false,
loadingComponent: false
loadingComponent: false,
wrapper: false,
extra: false
}

@@ -54,3 +59,5 @@ this.makeHOC(props)

component: Component = defaults.component, else: ElseComponent = defaults.else, // eslint-disable-line
loadingComponent: Loading = defaults.loadingComponent // eslint-disable-line
loadingComponent: Loading = defaults.loadingComponent, // eslint-disable-line
wrapper: Wrapper = defaults.wrapper, wrapperProps = defaults.wrapperProps, // eslint-disable-line
...extra
} = props

@@ -60,5 +67,9 @@ this.lastComponents = {

else: ElseComponent,
loadingComponent: Loading
loadingComponent: Loading,
wrapper: Wrapper,
wrapperProps,
extra
}
const Switcher = NullComponent(Loading, Component, ElseComponent, debug)
const Switcher = NullComponent(Loading,
Component, ElseComponent, Wrapper, wrapperProps, debug)
const HOC = connect(scaffold, undefined, undefined, { storeKey })(Switcher)

@@ -68,3 +79,8 @@ const elseName = ElseComponent.displayName || ElseComponent.name || 'Component'

const loadingName = Loading.displayName || Loading.name || 'Component'
HOC.displayName = `Toggle(component:${componentName},else:${elseName},loading:${loadingName})`
const wrapperName = Wrapper.displayName || Wrapper.name || 'Component'
if (Wrapper === DisplaysChildren) {
HOC.displayName = `Toggle(component:${componentName},else:${elseName},loading:${loadingName})`
} else {
HOC.displayName = `Toggle(component:${componentName},else:${elseName},loading:${loadingName}),wrapper:${wrapperName}`
}
this.HOC = HOC

@@ -76,6 +92,9 @@ }

component: Component = defaults.component, else: ElseComponent = defaults.else,
loadingComponent: Loading = defaults.loadingComponent
loadingComponent: Loading = defaults.loadingComponent, wrapper: Wrapper = defaults.wrapper,
wrapperProps = defaults.wrapperProps
} = newprops
if (Component !== this.lastComponents.component || ElseComponent !== this.lastComponents.else
|| Loading !== this.lastComponents.loadingComponent) {
|| Loading !== this.lastComponents.loadingComponent
|| Wrapper !== this.lastComponents.wrapper
|| !shallowEqual(wrapperProps, this.lastComponents.wrapperProps)) {
this.makeHOC(newprops)

@@ -88,6 +107,13 @@ }

component: Component = defaults.component, else: ElseComponent = defaults.else,
loadingComponent: Loading = defaults.loadingComponent, children
loadingComponent: Loading = defaults.loadingComponent, children,
wrapper: Wrapper = defaults.wrapper, wrapperProps = defaults.wrapperProps,
...extra
} = newprops
if (Component !== this.lastComponents.component || ElseComponent !== this.lastComponents.else
|| Loading !== this.lastComponents.loadingComponent || children !== this.props.children) {
|| Loading !== this.lastComponents.loadingComponent
|| Wrapper !== this.lastComponents.wrapper
|| !shallowEqual(wrapperProps, this.lastComponents.wrapperProps)
|| children !== this.props.children
|| !shallowEqual(extra, this.lastComponents.extra)) {
this.lastComponents.extra = extra
this.init(newprops)

@@ -102,3 +128,3 @@ return true

const {
component, else: unused, loadingComponent, children, ...props // eslint-disable-line
component, else: unused, loadingComponent, children, wrapper, wrapperProps, ...props // eslint-disable-line
} = this.props

@@ -105,0 +131,0 @@ const useProps = { ...props }

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc