diff --git a/lib/components.js b/lib/components.js index 1e2a791..4246f9e 100644 --- a/lib/components.js +++ b/lib/components.js @@ -43,12 +43,14 @@ var Layer = exports.Layer = function Layer() {var namespace = arguments.length > _react2.default.createClass({ componentWillMount: function componentWillMount() { this.props.register(this.props.id, this.props.children, this.props.mountPointId); - if (this.props.showInitially) { - this.props.show(this.props.id, this.props.defaultArgs || []); + if (this.props.showInitially) {var _props; + (_props = this.props).show.apply(_props, [this.props.id].concat(_toConsumableArray(this.props.initialArgs || []))); + } else {var _props2; + (_props2 = this.props).setArgs.apply(_props2, [this.props.id].concat(_toConsumableArray(this.props.initialArgs || []))); } }, - shouldComponentUpdate: function shouldComponentUpdate(newProps) {var _props = - this.props;var use = _props.use;var children = _props.children;var register = _props.register;var id = _props.id;var mountPointId = _props.mountPointId; + shouldComponentUpdate: function shouldComponentUpdate(newProps) {var _props3 = + this.props;var use = _props3.use;var children = _props3.children;var register = _props3.register;var id = _props3.id;var mountPointId = _props3.mountPointId; var needUpdate = false; if (id !== newProps.id || mountPointId !== newProps.mountPointId) { needUpdate = true; @@ -93,12 +95,12 @@ var LayerContext = exports.LayerContext = function LayerContext() {var namespace {var children = _ref2.children;var id = _ref2.id;var displaying = _ref2.displaying;var show = _ref2.show;var hide = _ref2.hide;var hideAll = _ref2.hideAll;var views = _ref2.views; - return children({ + return children.apply(undefined, [{ show: show, hide: hide, hideAll: hideAll, displaying: displaying, views: views, isActive: displaying.indexOf(id) !== -1, showMe: function showMe() {for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {args[_key3] = arguments[_key3];}return show.apply(undefined, [id].concat(args));}, showOnlyMe: function showOnlyMe() {for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {args[_key4] = arguments[_key4];}return hideAll() || show.apply(undefined, [id].concat(args));}, - hideMe: function hideMe() {return hide(id);} }); - + hideMe: function hideMe() {return hide(id);} }].concat(_toConsumableArray( + views[id].args))); });}; //# sourceMappingURL=components.js.map \ No newline at end of file diff --git a/lib/components.js.map b/lib/components.js.map index 00b3fa7..a2b0b2a 100644 --- a/lib/components.js.map +++ b/lib/components.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/components.js"],"names":["LayerStackMountPoint","namespace","store","dispatch","mountPointId","id","mountPointArgs","args","renderFn","views","displaying","show","hide","hideAll","length","map","index","view","showOnlyMe","hideMe","showMe","Error","Layer","createClass","componentWillMount","props","register","children","showInitially","defaultArgs","shouldComponentUpdate","newProps","use","needUpdate","toString","i","JSON","stringify","componentWillUnmount","render","LayerContext","isActive","indexOf"],"mappings":"2JAAA,8B;AACA;AACA;;AAEA,oC;;AAEO,IAAMA,sDAAuB,SAAvBA,oBAAuB,QAACC,SAAD,uEAAa,aAAb,QAA+B;AACjE,YAACC,KAAD,UAAWA,MAAMD,SAAN,CAAX,EADiE;AAEjE,8BAAY,iDAA4BE,QAA5B,CAAZ,EAFiE;AAGjE;;;AAGI,OAFAC,YAEA,QAFJC,EAEI,KAFoBC,cAEpB,QAFcC,IAEd,KADJC,QACI,QADJA,QACI,KADMC,KACN,QADMA,KACN,KADaC,UACb,QADaA,UACb,KADyBC,IACzB,QADyBA,IACzB,KAD+BC,IAC/B,QAD+BA,IAC/B,KADqCC,OACrC,QADqCA,OACrC;AACJ;AACE,sDAAQL,WAAWA,SAAS,EAACC,YAAD,EAAQC,sBAAR,EAAoBC,UAApB,EAA0BC,UAA1B,EAAgCC,gBAAhC,EAAyCT,0BAAzC,EAAuDE,8BAAvD,EAAT,CAAX,CAA4F;AAA5F,UACHI,WAAWI,MAAX,GAAoBJ,WAAWK,GAAX,CAAgB,UAACV,EAAD,EAAKW,KAAL,UAAe;AACpD,mDAAK,KAAKX,EAAV;AACI,0BAAM;AACN,oBAAMY,OAAOR,MAAMJ,EAAN,CAAb;AACA,oBAAIY,QAAQA,KAAKT,QAAb,IAAyBS,KAAKb,YAAL,KAAsBA,YAAnD,EAAiE;AAC/D,yBAAOa,KAAKT,QAAL,cAAc;AACnBQ,gCADmB,EACZX,MADY,EACRM,UADQ,EACFC,UADE,EACIC,gBADJ,EACaH,sBADb,EACyBD,YADzB,EACgCH,8BADhC,EACgD;AACnEY,gCAAY,yDAAIX,IAAJ,gDAAIA,IAAJ,iCAAaM,aAAaF,uBAAKN,EAAL,SAAYE,IAAZ,EAA1B,EAFO,EAEsC;AACzDY,4BAAQ,0BAAMP,KAAKP,EAAL,CAAN,EAHW,EAGK;AACA;AACxBe,4BAAQ,sDAAIb,IAAJ,qDAAIA,IAAJ,mCAAaI,uBAAKN,EAAL,SAAYE,IAAZ,EAAb,EALW,CAKoB;AALpB,mBAAd,4BAMDU,KAAKV,IANJ,GAAP;AAOD;AACD,oBAAI,OAAOU,IAAP,KAAgB,WAAhB,IAA+B,OAAOA,KAAKT,QAAZ,KAAyB,WAA5D,EAAyE;AACvE,wBAAM,IAAIa,KAAJ;AACgChB,oBADhC;AAEaA,oBAFb,4CAAN;;AAID,iBAAC,CAhBH,EADH,CADqC,GAAhB,CAApB;AAmBS,uDApBd,CADF;;;AAwBD,GA/BkE,CAA/B,EAA7B;;AAiCA,IAAMiB,wBAAQ,SAARA,KAAQ,QAACrB,SAAD,uEAAa,aAAb,QAA+B;AAClD,YAACC,KAAD,UAAWA,MAAMD,SAAN,CAAX,EADkD;AAElD,8BAAY,iDAA4BE,QAA5B,CAAZ,EAFkD;AAGjD,kBAAMoB,WAAN,CAAkB;AACnBC,sBADmB,gCACE;AACnB,WAAKC,KAAL,CAAWC,QAAX,CAAoB,KAAKD,KAAL,CAAWpB,EAA/B,EAAmC,KAAKoB,KAAL,CAAWE,QAA9C,EAAwD,KAAKF,KAAL,CAAWrB,YAAnE;AACA,UAAI,KAAKqB,KAAL,CAAWG,aAAf,EAA8B;AAC5B,aAAKH,KAAL,CAAWd,IAAX,CAAgB,KAAKc,KAAL,CAAWpB,EAA3B,EAA+B,KAAKoB,KAAL,CAAWI,WAAX,IAA0B,EAAzD;AACD;AACF,KANkB;AAOnBC,yBAPmB,iCAOGC,QAPH,EAOa;AACwB,WAAKN,KAD7B,KACtBO,GADsB,UACtBA,GADsB,KACjBL,QADiB,UACjBA,QADiB,KACPD,QADO,UACPA,QADO,KACGrB,EADH,UACGA,EADH,KACOD,YADP,UACOA,YADP;AAE9B,UAAI6B,aAAa,KAAjB;AACA,UAAI5B,OAAO0B,SAAS1B,EAAhB,IAAsBD,iBAAiB2B,SAAS3B,YAApD,EAAkE;AAChE6B,qBAAa,IAAb;AACD,OAFD;AAGK,UAAIN,SAASO,QAAT,OAAwBH,SAASJ,QAAT,CAAkBO,QAAlB,EAA5B,EAA0D;AAC7DD,qBAAa,IAAb;AACD,OAFI;AAGA,UAAID,GAAJ,EAAS;AACZ,YAAIA,IAAIlB,MAAJ,KAAeiB,SAASC,GAAT,CAAalB,MAAhC,EAAwC;AACtCmB,uBAAa,IAAb;AACD,SAFD,MAEO;AACL,cAAIE,IAAIH,IAAIlB,MAAZ;AACA,iBAAOqB,GAAP,EAAY;AACV,gBAAIC,KAAKC,SAAL,CAAeL,IAAIG,CAAJ,CAAf,MAA2BC,KAAKC,SAAL,CAAeN,SAASC,GAAT,CAAaG,CAAb,CAAf,CAA/B,EAAgE;AAC9DF,2BAAa,IAAb;AACD;AACF;AACF;AACF;;AAED,UAAIA,UAAJ,EAAgB;AACdP,iBAASK,SAAS1B,EAAlB,EAAsB0B,SAASJ,QAA/B,EAAyCI,SAAS3B,YAAlD;AACA,eAAO,IAAP;AACD;AACD,aAAO,KAAP;AACD,KAlCkB;;AAoCnBkC,wBApCmB,kCAoCI;AACrB;AACA;AACD,KAvCkB;;AAyCnBC,UAzCmB,oBAyCV;AACP,aAAO,+CAAP;AACD,KA3CkB,EAAlB,CAHiD,CAA/B,EAAd;;;AAiDA,IAAMC,sCAAe,SAAfA,YAAe,QAACvC,SAAD,uEAAa,aAAb,QAA+B;AACzD,YAACC,KAAD,UAAWA,MAAMD,SAAN,CAAX,EADyD;AAEzD,8BAAY,iDAA4BE,QAA5B,CAAZ,EAFyD;AAGzD;;;AAGI,OAFJwB,QAEI,SAFJA,QAEI,KAFMtB,EAEN,SAFMA,EAEN,KADJK,UACI,SADJA,UACI,KADQC,IACR,SADQA,IACR,KADcC,IACd,SADcA,IACd,KADoBC,OACpB,SADoBA,OACpB,KAD6BJ,KAC7B,SAD6BA,KAC7B;AACJ,WAAOkB,SAAS;AACdhB,gBADc,EACRC,UADQ,EACFC,gBADE,EACOH,sBADP,EACmBD,YADnB;AAEdgC,gBAAU/B,WAAWgC,OAAX,CAAmBrC,EAAnB,MAA2B,CAAC,CAFxB;AAGde,cAAQ,sDAAIb,IAAJ,qDAAIA,IAAJ,mCAAaI,uBAAKN,EAAL,SAAYE,IAAZ,EAAb,EAHM;AAIdW,kBAAY,0DAAIX,IAAJ,qDAAIA,IAAJ,mCAAaM,aAAaF,uBAAKN,EAAL,SAAYE,IAAZ,EAA1B,EAJE;AAKdY,cAAQ,0BAAMP,KAAKP,EAAL,CAAN,EALM,EAAT,CAAP;;AAOD,GAd0D,CAA/B,EAArB","file":"components.js","sourcesContent":["import React, { PropTypes } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\n\nimport { ACTIONS } from './reducer'\n\nexport const LayerStackMountPoint = (namespace = 'layer_stack') => connect(\n (store) => store[namespace],\n dispatch => bindActionCreators(ACTIONS, dispatch)\n)(({\n id: mountPointId, args: mountPointArgs, // from props\n renderFn, views, displaying, show, hide, hideAll // from store\n}) => {\n return (\n <div> { renderFn ? renderFn({views, displaying, show, hide, hideAll, mountPointId, mountPointArgs}) // it's possible to provide alternative renderFn for the MountPoint\n : (displaying.length ? displaying.map ((id, index) => // if no alternative renderFn provided we'll use the default one\n <div key={id}>\n {(() => {\n const view = views[id];\n if (view && view.renderFn && view.mountPointId === mountPointId) {\n return view.renderFn({\n index, id, show, hide, hideAll, displaying, views, mountPointArgs, // seems like there is no valid use-case mountPointId in the Layer render function\n showOnlyMe: (...args) => hideAll() || show(id, ...args), // TODO: think about improvement\n hideMe: () => hide(id), // intention here is to hide ID's management from Layer and let app developer manage these IDs independently\n // which will give an ability to write general-purpose Layers and share them b/w projects\n showMe: (...args) => show(id, ...args) // sometimes you may want to change args of the current layer\n }, ...view.args)\n }\n if (typeof view === 'undefined' || typeof view.renderFn === 'undefined') {\n throw new Error(`\nIt seems like you're using LayerContext with id=\"${ id }\" but corresponding Layer isn't declared in the current Components tree.\nMake sure that Layer with id=\"${ id }\" is rendered into the current tree.\n`)\n }})()}\n </div>) : <noscript />)}\n </div>\n )\n});\n\nexport const Layer = (namespace = 'layer_stack') => connect(\n (store) => store[namespace],\n dispatch => bindActionCreators(ACTIONS, dispatch)\n)((React.createClass({\n componentWillMount() {\n this.props.register(this.props.id, this.props.children, this.props.mountPointId);\n if (this.props.showInitially) {\n this.props.show(this.props.id, this.props.defaultArgs || [])\n }\n },\n shouldComponentUpdate(newProps) {\n const { use, children, register, id, mountPointId } = this.props;\n let needUpdate = false;\n if (id !== newProps.id || mountPointId !== newProps.mountPointId) {\n needUpdate = true;\n }\n else if (children.toString() !== newProps.children.toString()) {\n needUpdate = true;\n }\n else if (use) {\n if (use.length !== newProps.use.length) {\n needUpdate = true;\n } else {\n let i = use.length;\n while (i--) {\n if (JSON.stringify(use[i]) !== JSON.stringify(newProps.use[i])) {\n needUpdate = true;\n }\n }\n }\n }\n\n if (needUpdate) {\n register(newProps.id, newProps.children, newProps.mountPointId);\n return true;\n }\n return false;\n },\n\n componentWillUnmount() {\n // TODO: garbage collection\n // this.props.unregister(this.props.id)\n },\n\n render() {\n return <noscript />\n }\n})));\n\nexport const LayerContext = (namespace = 'layer_stack') => connect(\n (store) => store[namespace],\n dispatch => bindActionCreators(ACTIONS, dispatch)\n)(({\n children, id, // from props\n displaying, show, hide, hideAll, views // from store\n}) => {\n return children({\n show, hide, hideAll, displaying, views,\n isActive: displaying.indexOf(id) !== -1,\n showMe: (...args) => show(id, ...args),\n showOnlyMe: (...args) => hideAll() || show(id, ...args),\n hideMe: () => hide(id),\n });\n});"]} \ No newline at end of file +{"version":3,"sources":["../src/components.js"],"names":["LayerStackMountPoint","namespace","store","dispatch","mountPointId","id","mountPointArgs","args","renderFn","views","displaying","show","hide","hideAll","length","map","index","view","showOnlyMe","hideMe","showMe","Error","Layer","createClass","componentWillMount","props","register","children","showInitially","initialArgs","setArgs","shouldComponentUpdate","newProps","use","needUpdate","toString","i","JSON","stringify","componentWillUnmount","render","LayerContext","isActive","indexOf"],"mappings":"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","file":"components.js","sourcesContent":["import React, { PropTypes } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\n\nimport { ACTIONS } from './reducer'\n\nexport const LayerStackMountPoint = (namespace = 'layer_stack') => connect(\n (store) => store[namespace],\n dispatch => bindActionCreators(ACTIONS, dispatch)\n)(({\n id: mountPointId, args: mountPointArgs, // from props\n renderFn, views, displaying, show, hide, hideAll // from store\n}) => {\n return (\n <div> { renderFn ? renderFn({views, displaying, show, hide, hideAll, mountPointId, mountPointArgs}) // it's possible to provide alternative renderFn for the MountPoint\n : (displaying.length ? displaying.map ((id, index) => // if no alternative renderFn provided we'll use the default one\n <div key={id}>\n {(() => {\n const view = views[id];\n if (view && view.renderFn && view.mountPointId === mountPointId) {\n return view.renderFn({\n index, id, show, hide, hideAll, displaying, views, mountPointArgs, // seems like there is no valid use-case mountPointId in the Layer render function\n showOnlyMe: (...args) => hideAll() || show(id, ...args), // TODO: think about improvement\n hideMe: () => hide(id), // intention here is to hide ID's management from Layer and let app developer manage these IDs independently\n // which will give an ability to write general-purpose Layers and share them b/w projects\n showMe: (...args) => show(id, ...args) // sometimes you may want to change args of the current layer\n }, ...view.args)\n }\n if (typeof view === 'undefined' || typeof view.renderFn === 'undefined') {\n throw new Error(`\nIt seems like you're using LayerContext with id=\"${ id }\" but corresponding Layer isn't declared in the current Components tree.\nMake sure that Layer with id=\"${ id }\" is rendered into the current tree.\n`)\n }})()}\n </div>) : <noscript />)}\n </div>\n )\n});\n\nexport const Layer = (namespace = 'layer_stack') => connect(\n (store) => store[namespace],\n dispatch => bindActionCreators(ACTIONS, dispatch)\n)((React.createClass({\n componentWillMount() {\n this.props.register(this.props.id, this.props.children, this.props.mountPointId);\n if (this.props.showInitially) {\n this.props.show(this.props.id, ...(this.props.initialArgs || []))\n } else {\n this.props.setArgs(this.props.id, ...(this.props.initialArgs || []))\n }\n },\n shouldComponentUpdate(newProps) {\n const { use, children, register, id, mountPointId } = this.props;\n let needUpdate = false;\n if (id !== newProps.id || mountPointId !== newProps.mountPointId) {\n needUpdate = true;\n }\n else if (children.toString() !== newProps.children.toString()) {\n needUpdate = true;\n }\n else if (use) {\n if (use.length !== newProps.use.length) {\n needUpdate = true;\n } else {\n let i = use.length;\n while (i--) {\n if (JSON.stringify(use[i]) !== JSON.stringify(newProps.use[i])) {\n needUpdate = true;\n }\n }\n }\n }\n\n if (needUpdate) {\n register(newProps.id, newProps.children, newProps.mountPointId);\n return true;\n }\n return false;\n },\n\n componentWillUnmount() {\n // TODO: garbage collection\n // this.props.unregister(this.props.id)\n },\n\n render() {\n return <noscript />\n }\n})));\n\nexport const LayerContext = (namespace = 'layer_stack') => connect(\n (store) => store[namespace],\n dispatch => bindActionCreators(ACTIONS, dispatch)\n)(({\n children, id, // from props\n displaying, show, hide, hideAll, views // from store\n}) => {\n return children({\n show, hide, hideAll, displaying, views,\n isActive: displaying.indexOf(id) !== -1,\n showMe: (...args) => show(id, ...args),\n showOnlyMe: (...args) => hideAll() || show(id, ...args),\n hideMe: () => hide(id),\n }, ...views[id].args);\n});"]} \ No newline at end of file diff --git a/lib/reducer.js b/lib/reducer.js index 58ec986..1296286 100644 --- a/lib/reducer.js +++ b/lib/reducer.js @@ -6,6 +6,7 @@ var ACTIONS = exports.ACTIONS = { unregister: (0, _reduxActions.createAction)('LAYER_STACK_VIEW_UNREGISTER', function (id) {return { id: id };}), toggle: (0, _reduxActions.createAction)('LAYER_STACK_VIEW_TOGGLE'), show: (0, _reduxActions.createAction)('LAYER_STACK_VIEW_SHOW', function (id) {for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {args[_key - 1] = arguments[_key];}return { id: id, args: args };}), + setArgs: (0, _reduxActions.createAction)('LAYER_STACK_VIEW_SET_ARGS', function (id) {for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {args[_key2 - 1] = arguments[_key2];}return { id: id, args: args };}), hide: (0, _reduxActions.createAction)('LAYER_STACK_VIEW_HIDE'), hideAll: (0, _reduxActions.createAction)('LAYER_STACK_VIEW_HIDE_ALL') };exports.default = @@ -33,7 +34,14 @@ var ACTIONS = exports.ACTIONS = { } return _extends({}, state, { views: _extends({}, views, _defineProperty({}, id, newView)), displaying: newDisplaying }); }, - 'LAYER_STACK_VIEW_HIDE': function LAYER_STACK_VIEW_HIDE(_ref7, _ref8) {var state = _objectWithoutProperties(_ref7, []);var displaying = _ref7.displaying;var id = _ref8.payload; + 'LAYER_STACK_VIEW_SET_ARGS': function LAYER_STACK_VIEW_SET_ARGS(_ref7, _ref8) {var views = _ref7.views;var state = _objectWithoutProperties(_ref7, ['views']);var _ref8$payload = _ref8.payload;var id = _ref8$payload.id;var args = _ref8$payload.args; + var newView = _extends({}, views[id]); + if (0 !== args.length) { + newView.args = args; + } + return _extends({}, state, { views: _extends({}, views, _defineProperty({}, id, newView)) }); + }, + 'LAYER_STACK_VIEW_HIDE': function LAYER_STACK_VIEW_HIDE(_ref9, _ref10) {var state = _objectWithoutProperties(_ref9, []);var displaying = _ref9.displaying;var id = _ref10.payload; if (typeof id !== 'string') { return _extends({}, state, { displaying: [] }); } @@ -45,7 +53,7 @@ var ACTIONS = exports.ACTIONS = { } return state; }, - 'LAYER_STACK_VIEW_HIDE_ALL': function LAYER_STACK_VIEW_HIDE_ALL(_ref9) {var state = _objectWithoutProperties(_ref9, []); + 'LAYER_STACK_VIEW_HIDE_ALL': function LAYER_STACK_VIEW_HIDE_ALL(_ref11) {var state = _objectWithoutProperties(_ref11, []); return _extends({}, state, { displaying: [] }); } }, { diff --git a/lib/reducer.js.map b/lib/reducer.js.map index a286140..beb4242 100644 --- a/lib/reducer.js.map +++ b/lib/reducer.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/reducer.js"],"names":["ACTIONS","register","id","renderFn","mountPointId","unregister","toggle","show","args","hide","hideAll","views","state","payload","displaying","newView","newDisplaying","length","indexOf","index","splice"],"mappings":"8VAAA,6C;;;AAGO,IAAMA,4BAAU;AACrBC,YAAU,gCAAa,2BAAb,EAA0C,UAACC,EAAD,EAAKC,QAAL,EAAeC,YAAf,UAAiC,EAAEF,MAAF,EAAMC,kBAAN,EAAgBC,0BAAhB,EAAjC,EAA1C,CADW;AAErBC,cAAY,gCAAa,6BAAb,EAA4C,UAACH,EAAD,UAAS,EAAEA,MAAF,EAAT,EAA5C,CAFS;AAGrBI,UAAQ,gCAAa,yBAAb,CAHa;AAIrBC,QAAM,gCAAa,uBAAb,EAAsC,UAACL,EAAD,qCAAQM,IAAR,mEAAQA,IAAR,qCAAkB,EAAEN,MAAF,EAAMM,MAAMA,IAAZ,EAAlB,EAAtC,CAJe;AAKrBC,QAAM,gCAAa,uBAAb,CALe;AAMrBC,WAAS,gCAAa,2BAAb,CANY,EAAhB,C;;;AASQ,iCAAc;AAC3B,+BAA6B,gDAAoE,KAAlEC,KAAkE,QAAlEA,KAAkE,KAAxDC,KAAwD,uEAA9CC,OAA8C,KAAnCX,EAAmC,iBAAnCA,EAAmC,KAA/BC,QAA+B,iBAA/BA,QAA+B,KAArBC,YAAqB,iBAArBA,YAAqB;AAC/F,QAAIO,MAAMT,EAAN,CAAJ,EAAe;AACb,aAAOS,MAAMT,EAAN,EAAUC,QAAjB,CADa,CACc;AAC5B;AACDQ,yBAAYA,KAAZ,sBAAoBT,EAApB,EAAyB,EAAEC,kBAAF,EAAYK,MAAMG,MAAMT,EAAN,IAAYS,MAAMT,EAAN,EAAUM,IAAtB,GAA6B,EAA/C,EAAmDJ,0BAAnD,EAAzB;AACA,wBAAWQ,KAAX,IAAkBD,YAAlB;AACD,GAP0B;AAQ3B,iCAA+B,mDAA4C,KAA1CA,KAA0C,SAA1CA,KAA0C,KAAhCC,KAAgC,kDAAXV,EAAW,SAAtBW,OAAsB,CAAXX,EAAW;AACzE,WAAOS,MAAMT,EAAN,CAAP,CADyE,CACvD;AAClB,wBAAWU,KAAX,IAAkBD,OAAOA,KAAzB;AACD,GAX0B;AAY3B,2BAAyB,6CAA6D,KAA3DG,UAA2D,SAA3DA,UAA2D,KAA/CH,KAA+C,SAA/CA,KAA+C,KAArCC,KAAqC,sFAA3BC,OAA2B,KAAhBX,EAAgB,iBAAhBA,EAAgB,KAAZM,IAAY,iBAAZA,IAAY;AACpF,QAAMO,uBAAeJ,MAAMT,EAAN,CAAf,CAAN;AACA,QAAIc,gBAAgBF,UAApB;AACA,QAAI,MAAMN,KAAKS,MAAf,EAAuB;AACrBF,cAAQP,IAAR,GAAeA,IAAf;AACD;AACD,QAAI,CAAC,CAACM,WAAWI,OAAX,CAAmBhB,EAAnB,CAAN,EAA8B;AAC5Bc,mDAAoBF,UAApB,IAAgCZ,EAAhC;AACD;AACD,wBAAWU,KAAX,IAAkBD,oBAAYA,KAAZ,sBAAyBT,EAAzB,EAA8Ba,OAA9B,EAAlB,EAA8DD,YAAYE,aAA1E;AACD,GAtB0B;AAuB3B,2BAAyB,6CAA6C,KAAxCJ,KAAwC,2CAAjCE,UAAiC,SAAjCA,UAAiC,KAATZ,EAAS,SAAlBW,OAAkB;AACpE,QAAI,OAAOX,EAAP,KAAc,QAAlB,EAA4B;AAC1B,0BAAWU,KAAX,IAAkBE,YAAY,EAA9B;AACD;AACD,QAAME,6CAAoBF,UAApB,EAAN;AACA,QAAMK,QAAQH,cAAcE,OAAd,CAAsBhB,EAAtB,CAAd;AACA,QAAIiB,UAAU,CAAC,CAAf,EAAkB;AAChBH,oBAAcI,MAAd,CAAqBD,KAArB,EAA4B,CAA5B;AACA,0BAAWP,KAAX,IAAkBE,YAAYE,aAA9B;AACD;AACD,WAAOJ,KAAP;AACD,GAlC0B;AAmC3B,+BAA6B,0CAAgB,KAAXA,KAAW;AAC3C,wBAAWA,KAAX,IAAkBE,YAAY,EAA9B;AACD,GArC0B,EAAd;AAsCZ;AACCA,cAAY,EADb;AAECH,SAAO,EAFR,EAtCY,C","file":"reducer.js","sourcesContent":["import { handleActions } from 'redux-actions'\nimport { createAction } from 'redux-actions'\n\nexport const ACTIONS = {\n register: createAction('LAYER_STACK_VIEW_REGISTER', (id, renderFn, mountPointId) => ({ id, renderFn, mountPointId })),\n unregister: createAction('LAYER_STACK_VIEW_UNREGISTER', (id) => ({ id })),\n toggle: createAction('LAYER_STACK_VIEW_TOGGLE'),\n show: createAction('LAYER_STACK_VIEW_SHOW', (id, ...args) => ({ id, args: args })),\n hide: createAction('LAYER_STACK_VIEW_HIDE'),\n hideAll: createAction('LAYER_STACK_VIEW_HIDE_ALL'),\n};\n\nexport default handleActions({\n 'LAYER_STACK_VIEW_REGISTER': ({views, ...state}, { payload: { id, renderFn, mountPointId } }) => {\n if (views[id]) {\n delete views[id].renderFn; // mutable to just help javascript GC\n }\n views = {...views, [id]: { renderFn, args: views[id] ? views[id].args : [], mountPointId } };\n return {...state, views};\n },\n 'LAYER_STACK_VIEW_UNREGISTER': ({views, ...state}, { payload: { id } }) => {\n delete views[id]; // mutable to just help javascript GC\n return {...state, views: views};\n },\n 'LAYER_STACK_VIEW_SHOW': ({displaying, views, ...state}, { payload: { id, args }}) => {\n const newView = { ...views[id] };\n let newDisplaying = displaying;\n if (0 !== args.length) {\n newView.args = args;\n }\n if (!~displaying.indexOf(id)) {\n newDisplaying = [...displaying, id]\n }\n return {...state, views: { ...views, ...{ [id]: newView } } , displaying: newDisplaying };\n },\n 'LAYER_STACK_VIEW_HIDE': ({...state, displaying}, { payload: id }) => {\n if (typeof id !== 'string') {\n return {...state, displaying: [] };\n }\n const newDisplaying = [...displaying];\n const index = newDisplaying.indexOf(id);\n if (index !== -1) {\n newDisplaying.splice(index, 1);\n return {...state, displaying: newDisplaying };\n }\n return state;\n },\n 'LAYER_STACK_VIEW_HIDE_ALL': ({...state}) => {\n return {...state, displaying: [] };\n },\n}, {\n displaying: [],\n views: {},\n});"]} \ No newline at end of file +{"version":3,"sources":["../src/reducer.js"],"names":["ACTIONS","register","id","renderFn","mountPointId","unregister","toggle","show","args","setArgs","hide","hideAll","views","state","payload","displaying","newView","newDisplaying","length","indexOf","index","splice"],"mappings":"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","file":"reducer.js","sourcesContent":["import { handleActions } from 'redux-actions'\nimport { createAction } from 'redux-actions'\n\nexport const ACTIONS = {\n register: createAction('LAYER_STACK_VIEW_REGISTER', (id, renderFn, mountPointId) => ({ id, renderFn, mountPointId })),\n unregister: createAction('LAYER_STACK_VIEW_UNREGISTER', (id) => ({ id })),\n toggle: createAction('LAYER_STACK_VIEW_TOGGLE'),\n show: createAction('LAYER_STACK_VIEW_SHOW', (id, ...args) => ({ id, args: args })),\n setArgs: createAction('LAYER_STACK_VIEW_SET_ARGS', (id, ...args) => ({ id, args: args })),\n hide: createAction('LAYER_STACK_VIEW_HIDE'),\n hideAll: createAction('LAYER_STACK_VIEW_HIDE_ALL'),\n};\n\nexport default handleActions({\n 'LAYER_STACK_VIEW_REGISTER': ({views, ...state}, { payload: { id, renderFn, mountPointId } }) => {\n if (views[id]) {\n delete views[id].renderFn; // mutable to just help javascript GC\n }\n views = {...views, [id]: { renderFn, args: views[id] ? views[id].args : [], mountPointId } };\n return {...state, views};\n },\n 'LAYER_STACK_VIEW_UNREGISTER': ({views, ...state}, { payload: { id } }) => {\n delete views[id]; // mutable to just help javascript GC\n return {...state, views: views};\n },\n 'LAYER_STACK_VIEW_SHOW': ({displaying, views, ...state}, { payload: { id, args }}) => {\n const newView = { ...views[id] };\n let newDisplaying = displaying;\n if (0 !== args.length) {\n newView.args = args;\n }\n if (!~displaying.indexOf(id)) {\n newDisplaying = [...displaying, id]\n }\n return {...state, views: { ...views, ...{ [id]: newView } } , displaying: newDisplaying };\n },\n 'LAYER_STACK_VIEW_SET_ARGS': ({views, ...state}, { payload: { id, args }}) => {\n const newView = { ...views[id] };\n if (0 !== args.length) {\n newView.args = args;\n }\n return {...state, views: { ...views, ...{ [id]: newView } } };\n },\n 'LAYER_STACK_VIEW_HIDE': ({...state, displaying}, { payload: id }) => {\n if (typeof id !== 'string') {\n return {...state, displaying: [] };\n }\n const newDisplaying = [...displaying];\n const index = newDisplaying.indexOf(id);\n if (index !== -1) {\n newDisplaying.splice(index, 1);\n return {...state, displaying: newDisplaying };\n }\n return state;\n },\n 'LAYER_STACK_VIEW_HIDE_ALL': ({...state}) => {\n return {...state, displaying: [] };\n },\n}, {\n displaying: [],\n views: {},\n});"]} \ No newline at end of file diff --git a/package.json b/package.json index 0edad6b..1f26fe4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-layer-stack", - "version": "1.5.1", + "version": "1.6.0", "description": "Simple but ubiquitously powerful and agnostic layering system for React. Useful for any kind of windowing/popover/modals/tooltip application", "repository": { "type": "git", diff --git a/src/components.js b/src/components.js index 5351bb6..8bd328d 100644 --- a/src/components.js +++ b/src/components.js @@ -44,7 +44,9 @@ export const Layer = (namespace = 'layer_stack') => connect( componentWillMount() { this.props.register(this.props.id, this.props.children, this.props.mountPointId); if (this.props.showInitially) { - this.props.show(this.props.id, this.props.defaultArgs || []) + this.props.show(this.props.id, ...(this.props.initialArgs || [])) + } else { + this.props.setArgs(this.props.id, ...(this.props.initialArgs || [])) } }, shouldComponentUpdate(newProps) { @@ -99,5 +101,5 @@ export const LayerContext = (namespace = 'layer_stack') => connect( showMe: (...args) => show(id, ...args), showOnlyMe: (...args) => hideAll() || show(id, ...args), hideMe: () => hide(id), - }); + }, ...views[id].args); }); \ No newline at end of file diff --git a/src/reducer.js b/src/reducer.js index 1d47635..3b8d524 100644 --- a/src/reducer.js +++ b/src/reducer.js @@ -6,6 +6,7 @@ export const ACTIONS = { unregister: createAction('LAYER_STACK_VIEW_UNREGISTER', (id) => ({ id })), toggle: createAction('LAYER_STACK_VIEW_TOGGLE'), show: createAction('LAYER_STACK_VIEW_SHOW', (id, ...args) => ({ id, args: args })), + setArgs: createAction('LAYER_STACK_VIEW_SET_ARGS', (id, ...args) => ({ id, args: args })), hide: createAction('LAYER_STACK_VIEW_HIDE'), hideAll: createAction('LAYER_STACK_VIEW_HIDE_ALL'), }; @@ -33,6 +34,13 @@ export default handleActions({ } return {...state, views: { ...views, ...{ [id]: newView } } , displaying: newDisplaying }; }, + 'LAYER_STACK_VIEW_SET_ARGS': ({views, ...state}, { payload: { id, args }}) => { + const newView = { ...views[id] }; + if (0 !== args.length) { + newView.args = args; + } + return {...state, views: { ...views, ...{ [id]: newView } } }; + }, 'LAYER_STACK_VIEW_HIDE': ({...state, displaying}, { payload: id }) => { if (typeof id !== 'string') { return {...state, displaying: [] };