react-tab-set 1.1.439 → 1.1.441

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -47,7 +47,7 @@ Content can be declared either as children or as the return of a function assign
47
47
 
48
48
  If your component extends `PureComponent` or is presentational, you might prefer to declare content as children.
49
49
 
50
- Otherwise, you might prefer to assign a function to the `render` prop, so that rendering is deferred until the tab is selected.
50
+ Otherwise, you can assign a function to the `render` prop, so that rendering is deferred until the tab is selected.
51
51
 
52
52
  ### Content as children
53
53
 
@@ -99,7 +99,7 @@ Similarly, they can be declared in any combination.
99
99
 
100
100
  ## Demonstrating _react-tab-set_
101
101
 
102
- [Example `Storybooks` are available on GitHub](https://github.com/sequencemedia/react-tab-set).
102
+ [Example `Storybooks` are available](https://github.com/sequencemedia/react-tab-set).
103
103
 
104
104
  Clone the repository, then:
105
105
 
@@ -41,8 +41,6 @@ module.exports = (api) => {
41
41
  if (api) api.cache.using(env)
42
42
 
43
43
  return {
44
- compact: true,
45
- comments: false,
46
44
  presets
47
45
  }
48
46
  }
package/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export * from './src/index.cjs'
package/package.json CHANGED
@@ -1,63 +1,71 @@
1
1
  {
2
2
  "name": "react-tab-set",
3
- "version": "1.1.439",
3
+ "version": "1.1.441",
4
4
  "description": "A React Tab Set component",
5
- "main": "./index.js",
5
+ "main": "./src/index.mjs",
6
+ "type": "module",
7
+ "types": "./src/index.d.mts",
6
8
  "author": {
7
9
  "name": "Jonathan Perry for Sequence Media Limited",
8
10
  "email": "sequencemedia@sequencemedia.net",
9
11
  "url": "http://www.sequencemedia.net"
10
12
  },
11
13
  "license": "MIT",
14
+ "engines": {
15
+ "node": ">=18.17.0"
16
+ },
12
17
  "repository": {
13
18
  "type": "git",
14
19
  "url": "git://github.com/sequencemedia/react-tab-set.git"
15
20
  },
16
21
  "scripts": {
17
- "prepublishOnly": "cross-env NODE_ENV=production npm run build",
18
- "prebuild": "npm run clean",
19
- "build": "npm run babel",
20
- "build:watch": "npm run babel:watch",
21
- "babel": "babel src -d lib --extensions .ts,.tsx",
22
- "babel:watch": "npm run babel -- -w",
23
- "clean": "rimraf lib",
24
- "lint": "eslint .",
22
+ "lint": "eslint . --ext .mjs,.cjs,.jsx,.mts,.cts",
25
23
  "lint:fix": "npm run lint -- --fix",
26
- "prepare": "husky install"
24
+ "prepare": "husky install",
25
+ "storybook": "storybook dev -p 6006",
26
+ "build-storybook": "storybook build"
27
27
  },
28
28
  "dependencies": {
29
+ "debug": "^4.3.4",
29
30
  "uuid": "^9.0.1"
30
31
  },
31
32
  "devDependencies": {
32
- "@babel/cli": "^7.22.15",
33
33
  "@babel/core": "^7.22.20",
34
34
  "@babel/eslint-parser": "^7.22.15",
35
- "@babel/plugin-proposal-class-properties": "^7.18.6",
36
- "@babel/plugin-proposal-export-default-from": "^7.22.17",
37
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
38
- "@babel/plugin-transform-typescript": "^7.22.15",
35
+ "@babel/plugin-syntax-jsx": "^7.22.5",
39
36
  "@babel/preset-env": "^7.22.20",
40
37
  "@babel/preset-react": "^7.22.15",
41
- "@babel/preset-typescript": "^7.22.15",
42
38
  "@babel/register": "^7.22.15",
43
39
  "@sequencemedia/hooks": "^1.0.453",
44
- "@types/react": "^18.2.21",
40
+ "@storybook/addon-essentials": "^7.4.3",
41
+ "@storybook/addon-links": "^7.4.4",
42
+ "@storybook/react": "^7.4.4",
43
+ "@storybook/react-webpack5": "^7.4.4",
44
+ "@types/debug": "^4.1.9",
45
+ "@types/react": "^18.2.22",
45
46
  "@types/uuid": "^9.0.4",
46
- "@typescript-eslint/eslint-plugin": "5.61.0",
47
- "@typescript-eslint/parser": "5.61.0",
48
- "babel-plugin-module-resolver": "^5.0.0",
47
+ "@typescript-eslint/eslint-plugin": "^6.7.2",
48
+ "@typescript-eslint/parser": "^6.7.2",
49
49
  "core-js": "^3.32.2",
50
50
  "cross-env": "^7.0.3",
51
51
  "eslint": "^8.49.0",
52
52
  "eslint-config-standard": "^17.1.0",
53
- "eslint-config-standard-with-typescript": "35.0.0",
54
- "eslint-import-resolver-babel-module": "^5.3.2",
53
+ "eslint-config-standard-with-typescript": "^39.0.0",
55
54
  "eslint-plugin-react": "^7.33.2",
55
+ "eslint-plugin-storybook": "^0.6.14",
56
56
  "husky": "^8.0.3",
57
57
  "prop-types": "15.7.2",
58
- "react": "16.14.0",
59
- "react-dom": "16.14.0",
60
- "rimraf": "^5.0.1",
61
- "typescript": "^5.2.2"
58
+ "react": "latest",
59
+ "react-dom": "latest",
60
+ "storybook": "^7.4.4"
61
+ },
62
+ "exports": {
63
+ ".": "./src/index.mjs",
64
+ "./tab-set/is-tab-group": "./src/tab-set/is-tab-group.mjs",
65
+ "./tab-set/is-tab-panel": "./src/tab-set/is-tab-panel.mjs",
66
+ "./tab-set/tab-group": "./src/tab-set/tab-group/index.cjs",
67
+ "./tab-set/tab-group/tab": "./src/tab-set/tab-group/tab/index.cjs",
68
+ "./tab-set/tab-panel": "./src/tab-set/tab-panel/index.cjs",
69
+ "./tab-set": "./src/tab-set/index.cjs"
62
70
  }
63
71
  }
package/src/.babelrc CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "presets": [
3
- "@babel/typescript",
4
3
  [
5
4
  "@babel/env",
6
5
  {
@@ -21,26 +20,6 @@
21
20
  "@babel/react"
22
21
  ],
23
22
  "plugins": [
24
- "@babel/transform-typescript",
25
- "@babel/proposal-export-default-from",
26
- "@babel/proposal-export-namespace-from",
27
- [
28
- "@babel/proposal-class-properties",
29
- {
30
- "loose": false
31
- }
32
- ],
33
- [
34
- "module-resolver",
35
- {
36
- "root": [
37
- ".."
38
- ],
39
- "cwd": "babelrc",
40
- "alias": {
41
- "react-tab-set": "."
42
- }
43
- }
44
- ]
23
+ "@babel/syntax-jsx"
45
24
  ]
46
25
  }
@@ -0,0 +1,49 @@
1
+ declare module 'react-tab-set' {
2
+ import type React from 'react'
3
+
4
+ import type {
5
+ JSX
6
+ } from 'react'
7
+
8
+ import {
9
+ Component
10
+ } from 'react'
11
+
12
+ export interface TabSetProps {
13
+ children: JSX.Element | JSX.Element[]
14
+ selectedTab: string
15
+ onChange: (selectedTab: string) => void
16
+ }
17
+
18
+ export interface TabGroupProps {
19
+ children: JSX.Element | JSX.Element[]
20
+ selectedTab: string
21
+ onTabSelect: (value: React.SetStateAction<string>) => void
22
+ }
23
+
24
+ export interface TabProps {
25
+ children: JSX.Element | JSX.Element[] | string | number | boolean
26
+ tab: string
27
+ selectedTab: string
28
+ onTabSelect: (value: React.SetStateAction<string>) => void
29
+ }
30
+
31
+ export interface TabPanelProps {
32
+ children?: JSX.Element | JSX.Element[] | string | number | boolean | undefined | null
33
+ tab: string
34
+ selectedTab: string
35
+ render?: () => JSX.Element | JSX.Element[] | string | number | boolean | undefined | null
36
+ }
37
+
38
+ export function isTabGroup (component: any): component is TabGroup
39
+ export function isTab (component: any): component is Tab
40
+ export function isTabPanel (component: any): component is TabPanel
41
+
42
+ class TabSet extends Component<TabSetProps> {}
43
+
44
+ export class TabGroup extends Component<TabGroupProps> {}
45
+ export class Tab extends Component<TabProps> {}
46
+ export class TabPanel extends Component<TabPanelProps> {}
47
+
48
+ export default TabSet
49
+ }
package/src/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export { default } from './tab-set/index.cjs'
@@ -0,0 +1,11 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!react-tab-set)/
4
+ ]
5
+ })
6
+
7
+ const {
8
+ default: component
9
+ } = require('./index.jsx')
10
+
11
+ module.exports = component
@@ -0,0 +1,107 @@
1
+ import React, {
2
+ Children,
3
+ cloneElement,
4
+ useState,
5
+ useEffect
6
+ } from 'react'
7
+ import PropTypes from 'prop-types'
8
+ import {
9
+ v4
10
+ } from 'uuid'
11
+ import debug from 'debug'
12
+
13
+ import isTabPanel from './is-tab-panel.mjs'
14
+ import isTabGroup from './is-tab-group.mjs'
15
+
16
+ const error = debug('react-tab-set/tab-set')
17
+
18
+ function mapChildren (
19
+ children,
20
+ selectedTab,
21
+ onTabSelect
22
+ ) {
23
+ return Children.map(children, (child) => {
24
+ const { type } = child
25
+
26
+ if (type) { // eslint-disable-line @typescript-eslint/strict-boolean-expressions
27
+ const { props } = child
28
+
29
+ if (isTabGroup(type)) {
30
+ return cloneElement(
31
+ child,
32
+ {
33
+ ...props,
34
+ selectedTab,
35
+ onTabSelect
36
+ }
37
+ )
38
+ }
39
+
40
+ if (isTabPanel(type)) {
41
+ return cloneElement(
42
+ child,
43
+ {
44
+ ...props,
45
+ selectedTab
46
+ }
47
+ )
48
+ }
49
+
50
+ const {
51
+ children
52
+ } = props
53
+
54
+ if (children) { // eslint-disable-line @typescript-eslint/strict-boolean-expressions
55
+ return cloneElement(
56
+ child,
57
+ {
58
+ ...props,
59
+ children: mapChildren(children, selectedTab, onTabSelect)
60
+ }
61
+ )
62
+ }
63
+ }
64
+
65
+ return child
66
+ })
67
+ }
68
+
69
+ export default function TabSet (props) {
70
+ const {
71
+ children,
72
+ selectedTab: tab
73
+ } = props
74
+
75
+ const [selectedTab, setSelectedTab] = useState(tab)
76
+
77
+ useEffect(() => { setSelectedTab(tab) }, [tab])
78
+
79
+ useEffect(() => {
80
+ const { onChange } = props
81
+
82
+ try {
83
+ onChange(selectedTab)
84
+ } catch {
85
+ error('Error `onChange`')
86
+ }
87
+ }, [selectedTab])
88
+
89
+ return (
90
+ <div className='tab-set'>
91
+ {mapChildren(children, selectedTab, setSelectedTab)}
92
+ </div>
93
+ )
94
+ }
95
+
96
+ TabSet.propTypes = {
97
+ children: PropTypes.oneOfType([
98
+ PropTypes.node,
99
+ PropTypes.arrayOf(PropTypes.node)
100
+ ]).isRequired,
101
+ selectedTab: PropTypes.string,
102
+ onChange: PropTypes.func
103
+ }
104
+
105
+ TabSet.defaultProps = {
106
+ selectedTab: v4()
107
+ }
@@ -0,0 +1,5 @@
1
+ import TabGroup from './tab-group/index.cjs'
2
+
3
+ export default function isTabGroup (component) {
4
+ return component === TabGroup
5
+ }
@@ -0,0 +1,5 @@
1
+ import TabPanel from './tab-panel/index.cjs'
2
+
3
+ export default function isTabPanel (component) {
4
+ return component === TabPanel
5
+ }
@@ -0,0 +1,11 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!react-tab-set)/
4
+ ]
5
+ })
6
+
7
+ const {
8
+ default: component
9
+ } = require('./index.jsx')
10
+
11
+ module.exports = component
@@ -0,0 +1,79 @@
1
+ import React, {
2
+ Children,
3
+ cloneElement
4
+ } from 'react'
5
+ import PropTypes from 'prop-types'
6
+ import {
7
+ v4
8
+ } from 'uuid'
9
+
10
+ import isTab from './is-tab.mjs'
11
+
12
+ function mapChildren (
13
+ children,
14
+ selectedTab,
15
+ onTabSelect
16
+ ) {
17
+ return Children.map(children, (child) => {
18
+ const { type } = child
19
+
20
+ if (type) { // eslint-disable-line @typescript-eslint/strict-boolean-expressions
21
+ const { props } = child
22
+
23
+ if (isTab(type)) {
24
+ return cloneElement(
25
+ child,
26
+ {
27
+ ...props,
28
+ selectedTab,
29
+ onTabSelect
30
+ }
31
+ )
32
+ }
33
+
34
+ const {
35
+ children
36
+ } = props
37
+
38
+ if (children) { // eslint-disable-line @typescript-eslint/strict-boolean-expressions
39
+ return cloneElement(
40
+ child,
41
+ {
42
+ ...props,
43
+ children: mapChildren(children, selectedTab, onTabSelect)
44
+ }
45
+ )
46
+ }
47
+ }
48
+
49
+ return child
50
+ })
51
+ }
52
+
53
+ export default function TabGroup (props) {
54
+ const {
55
+ children,
56
+ selectedTab,
57
+ onTabSelect
58
+ } = props
59
+
60
+ return (
61
+ <ul className='tab-group'>
62
+ {mapChildren(children, selectedTab, onTabSelect)}
63
+ </ul>
64
+ )
65
+ }
66
+
67
+ TabGroup.propTypes = {
68
+ children: PropTypes.oneOfType([
69
+ PropTypes.node,
70
+ PropTypes.arrayOf(PropTypes.node)
71
+ ]).isRequired,
72
+ selectedTab: PropTypes.string,
73
+ onTabSelect: PropTypes.func
74
+ }
75
+
76
+ TabGroup.defaultProps = {
77
+ selectedTab: v4(),
78
+ onTabSelect () { }
79
+ }
@@ -0,0 +1,5 @@
1
+ import Tab from './tab/index.cjs'
2
+
3
+ export default function isTab (component) {
4
+ return component === Tab
5
+ }
@@ -0,0 +1,11 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!react-tab-set)/
4
+ ]
5
+ })
6
+
7
+ const {
8
+ default: component
9
+ } = require('./index.jsx')
10
+
11
+ module.exports = component
@@ -0,0 +1,43 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import {
4
+ v4
5
+ } from 'uuid'
6
+
7
+ export default function Tab (props) {
8
+ const {
9
+ children,
10
+ tab,
11
+ selectedTab,
12
+ onTabSelect
13
+ } = props
14
+
15
+ const className = (tab === selectedTab)
16
+ ? 'tab selected'
17
+ : 'tab'
18
+
19
+ return (
20
+ <li
21
+ className={className}
22
+ onClick={() => {
23
+ onTabSelect(tab)
24
+ }}>
25
+ {children}
26
+ </li>
27
+ )
28
+ }
29
+
30
+ Tab.propTypes = {
31
+ children: PropTypes.oneOfType([
32
+ PropTypes.node,
33
+ PropTypes.arrayOf(PropTypes.node)
34
+ ]).isRequired,
35
+ tab: PropTypes.string.isRequired,
36
+ selectedTab: PropTypes.string,
37
+ onTabSelect: PropTypes.func
38
+ }
39
+
40
+ Tab.defaultProps = {
41
+ selectedTab: v4(),
42
+ onTabSelect () { }
43
+ }
@@ -0,0 +1,11 @@
1
+ require('@babel/register')({
2
+ ignore: [
3
+ /node_modules\/(?!react-tab-set)/
4
+ ]
5
+ })
6
+
7
+ const {
8
+ default: component
9
+ } = require('./index.jsx')
10
+
11
+ module.exports = component
@@ -0,0 +1,43 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import {
4
+ v4
5
+ } from 'uuid'
6
+
7
+ export default function TabPanel (props) {
8
+ const {
9
+ tab,
10
+ selectedTab
11
+ } = props
12
+
13
+ if (tab === selectedTab) {
14
+ const {
15
+ render = () => null,
16
+ children = render()
17
+ } = props
18
+
19
+ if (children) { // eslint-disable-line @typescript-eslint/strict-boolean-expressions
20
+ return (
21
+ <div className='tab-panel'>
22
+ {children}
23
+ </div>
24
+ )
25
+ }
26
+ }
27
+
28
+ return null
29
+ }
30
+
31
+ TabPanel.propTypes = {
32
+ children: PropTypes.oneOfType([
33
+ PropTypes.node,
34
+ PropTypes.arrayOf(PropTypes.node)
35
+ ]),
36
+ tab: PropTypes.string.isRequired,
37
+ selectedTab: PropTypes.string,
38
+ render: PropTypes.func
39
+ }
40
+
41
+ TabPanel.defaultProps = {
42
+ selectedTab: v4()
43
+ }
package/index.js DELETED
@@ -1,2 +0,0 @@
1
- //
2
- module.exports = require('./lib')
package/lib/index.js DELETED
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Tab",{enumerable:true,get:function get(){return _tab["default"];}});Object.defineProperty(exports,"TabGroup",{enumerable:true,get:function get(){return _tabGroup["default"];}});Object.defineProperty(exports,"TabPanel",{enumerable:true,get:function get(){return _tabPanel["default"];}});exports["default"]=void 0;Object.defineProperty(exports,"isTab",{enumerable:true,get:function get(){return _isTab["default"];}});Object.defineProperty(exports,"isTabGroup",{enumerable:true,get:function get(){return _isTabGroup["default"];}});Object.defineProperty(exports,"isTabPanel",{enumerable:true,get:function get(){return _isTabPanel["default"];}});var _isTabGroup=_interopRequireDefault(require("./tab-set/is-tab-group"));var _isTab=_interopRequireDefault(require("./tab-set/tab-group/is-tab"));var _isTabPanel=_interopRequireDefault(require("./tab-set/is-tab-panel"));var _tabGroup=_interopRequireDefault(require("./tab-set/tab-group"));var _tab=_interopRequireDefault(require("./tab-set/tab-group/tab"));var _tabPanel=_interopRequireDefault(require("./tab-set/tab-panel"));var _tabSet=_interopRequireDefault(require("./tab-set"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}var _default=_tabSet["default"];exports["default"]=_default;
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");require("core-js/modules/es.object.set-prototype-of.js");require("core-js/modules/es.function.bind.js");require("core-js/modules/es.object.get-prototype-of.js");require("core-js/modules/es.reflect.construct.js");require("core-js/modules/es.object.create.js");require("core-js/modules/es.object.keys.js");require("core-js/modules/es.array.filter.js");require("core-js/modules/es.object.get-own-property-descriptor.js");require("core-js/modules/es.array.for-each.js");require("core-js/modules/web.dom-collections.for-each.js");require("core-js/modules/es.object.get-own-property-descriptors.js");require("core-js/modules/es.object.define-properties.js");require("core-js/modules/es.symbol.iterator.js");require("core-js/modules/es.array.iterator.js");require("core-js/modules/es.string.iterator.js");require("core-js/modules/web.dom-collections.iterator.js");require("core-js/modules/es.weak-map.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;require("core-js/modules/es.array.concat.js");require("core-js/modules/es.array.map.js");require("core-js/modules/es.symbol.to-primitive.js");require("core-js/modules/es.date.to-primitive.js");require("core-js/modules/es.symbol.js");require("core-js/modules/es.symbol.description.js");require("core-js/modules/es.object.to-string.js");require("core-js/modules/es.number.constructor.js");var _react=_interopRequireWildcard(require("react"));var _uuid=require("uuid");var _isTabPanel=_interopRequireDefault(require("./is-tab-panel"));var _isTabGroup=_interopRequireDefault(require("./is-tab-group"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj);}return newObj;}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a 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,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,"prototype",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function _createSuperInternal(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return _possibleConstructorReturn(this,result);};}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}else if(call!==void 0){throw new TypeError("Derived constructors may only return object or undefined");}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var TabSet=function(_Component){_inherits(TabSet,_Component);var _super=_createSuper(TabSet);function TabSet(){var _this;_classCallCheck(this,TabSet);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_super.call.apply(_super,[this].concat(args));_defineProperty(_assertThisInitialized(_this),"handleTabSelect",function(selectedTab){if(selectedTab!==_this.props.selectedTab){var onChange=_this.props.onChange;_this.setState({selectedTab:selectedTab});onChange(selectedTab);}});return _this;}_createClass(TabSet,[{key:"shouldComponentUpdate",value:function shouldComponentUpdate(props){return props.children!==this.props.children||props.selectedTab!==this.props.selectedTab;}},{key:"mapChildren",value:function mapChildren(children,selectedTab){var _this2=this;return _react.Children.map(children,function(child){var type=child.type;if(type){var props=child.props;if((0,_isTabGroup["default"])(type)){return(0,_react.cloneElement)(child,_objectSpread(_objectSpread({},props),{},{selectedTab:selectedTab,onTabSelect:_this2.handleTabSelect}));}if((0,_isTabPanel["default"])(type)){return(0,_react.cloneElement)(child,_objectSpread(_objectSpread({},props),{},{selectedTab:selectedTab}));}var _children=props.children;if(_children){return(0,_react.cloneElement)(child,_objectSpread(_objectSpread({},props),{},{children:_this2.mapChildren(_children,selectedTab)}));}}return child;});}},{key:"getChildren",value:function getChildren(){var _this$props=this.props,children=_this$props.children,selectedTab=_this$props.selectedTab;return this.mapChildren(children,selectedTab);}},{key:"render",value:function render(){return _react["default"].createElement("div",{className:"tab-set"},this.getChildren());}}]);return TabSet;}(_react.Component);exports["default"]=TabSet;_defineProperty(TabSet,"defaultProps",{onChange:function onChange(){},selectedTab:(0,_uuid.v4)(),children:[]});
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _tabGroup=_interopRequireDefault(require("./tab-group"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}var isTabGroup=function isTabGroup(c){return c===_tabGroup["default"];};var _default=isTabGroup;exports["default"]=_default;
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _tabPanel=_interopRequireDefault(require("./tab-panel"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}var isTabPanel=function isTabPanel(c){return c===_tabPanel["default"];};var _default=isTabPanel;exports["default"]=_default;
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");require("core-js/modules/es.object.set-prototype-of.js");require("core-js/modules/es.function.bind.js");require("core-js/modules/es.object.get-prototype-of.js");require("core-js/modules/es.reflect.construct.js");require("core-js/modules/es.object.create.js");require("core-js/modules/es.object.keys.js");require("core-js/modules/es.array.filter.js");require("core-js/modules/es.object.get-own-property-descriptor.js");require("core-js/modules/es.array.for-each.js");require("core-js/modules/web.dom-collections.for-each.js");require("core-js/modules/es.object.get-own-property-descriptors.js");require("core-js/modules/es.object.define-properties.js");require("core-js/modules/es.symbol.iterator.js");require("core-js/modules/es.array.iterator.js");require("core-js/modules/es.string.iterator.js");require("core-js/modules/web.dom-collections.iterator.js");require("core-js/modules/es.weak-map.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;require("core-js/modules/es.array.concat.js");require("core-js/modules/es.array.map.js");require("core-js/modules/es.symbol.to-primitive.js");require("core-js/modules/es.date.to-primitive.js");require("core-js/modules/es.symbol.js");require("core-js/modules/es.symbol.description.js");require("core-js/modules/es.object.to-string.js");require("core-js/modules/es.number.constructor.js");var _react=_interopRequireWildcard(require("react"));var _uuid=require("uuid");var _isTab=_interopRequireDefault(require("./is-tab"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj);}return newObj;}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a 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,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,"prototype",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function _createSuperInternal(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return _possibleConstructorReturn(this,result);};}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}else if(call!==void 0){throw new TypeError("Derived constructors may only return object or undefined");}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var TabGroup=function(_Component){_inherits(TabGroup,_Component);var _super=_createSuper(TabGroup);function TabGroup(){var _this;_classCallCheck(this,TabGroup);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_super.call.apply(_super,[this].concat(args));_defineProperty(_assertThisInitialized(_this),"handleTabClick",function(tab){var onTabSelect=_this.props.onTabSelect;onTabSelect(tab);});return _this;}_createClass(TabGroup,[{key:"shouldComponentUpdate",value:function shouldComponentUpdate(props){return props.children!==this.props.children||props.selectedTab!==this.props.selectedTab;}},{key:"mapChildren",value:function mapChildren(children,selectedTab){var _this2=this;return _react.Children.map(children,function(child){var type=child.type;if(type){var props=child.props;if((0,_isTab["default"])(type)){return(0,_react.cloneElement)(child,_objectSpread(_objectSpread({},props),{},{selectedTab:selectedTab,onTabClick:_this2.handleTabClick}));}var _children=props.children;if(_children){return(0,_react.cloneElement)(child,_objectSpread(_objectSpread({},props),{},{children:_this2.mapChildren(_children,selectedTab)}));}}return child;});}},{key:"getChildren",value:function getChildren(){var _this$props=this.props,children=_this$props.children,selectedTab=_this$props.selectedTab;return this.mapChildren(children,selectedTab);}},{key:"render",value:function render(){return _react["default"].createElement("ul",{className:"tab-group"},this.getChildren());}}]);return TabGroup;}(_react.Component);exports["default"]=TabGroup;_defineProperty(TabGroup,"defaultProps",{onTabSelect:function onTabSelect(){},selectedTab:(0,_uuid.v4)(),children:[]});
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _tab=_interopRequireDefault(require("./tab"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj};}var isTab=function isTab(c){return c===_tab["default"];};var _default=isTab;exports["default"]=_default;
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");require("core-js/modules/es.object.set-prototype-of.js");require("core-js/modules/es.function.bind.js");require("core-js/modules/es.object.get-prototype-of.js");require("core-js/modules/es.reflect.construct.js");require("core-js/modules/es.object.create.js");require("core-js/modules/es.symbol.iterator.js");require("core-js/modules/es.array.iterator.js");require("core-js/modules/es.string.iterator.js");require("core-js/modules/web.dom-collections.iterator.js");require("core-js/modules/es.weak-map.js");require("core-js/modules/es.object.get-own-property-descriptor.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;require("core-js/modules/es.array.concat.js");require("core-js/modules/es.symbol.to-primitive.js");require("core-js/modules/es.date.to-primitive.js");require("core-js/modules/es.symbol.js");require("core-js/modules/es.symbol.description.js");require("core-js/modules/es.object.to-string.js");require("core-js/modules/es.number.constructor.js");var _react=_interopRequireWildcard(require("react"));var _uuid=require("uuid");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj);}return newObj;}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a 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,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,"prototype",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function _createSuperInternal(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return _possibleConstructorReturn(this,result);};}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}else if(call!==void 0){throw new TypeError("Derived constructors may only return object or undefined");}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var Tab=function(_Component){_inherits(Tab,_Component);var _super=_createSuper(Tab);function Tab(){var _this;_classCallCheck(this,Tab);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_super.call.apply(_super,[this].concat(args));_defineProperty(_assertThisInitialized(_this),"handleClick",function(){var _this$props=_this.props,tab=_this$props.tab,onTabClick=_this$props.onTabClick;onTabClick(tab);});return _this;}_createClass(Tab,[{key:"shouldComponentUpdate",value:function shouldComponentUpdate(props){return props.children!==this.props.children||props.tab!==this.props.tab||props.selectedTab!==this.props.selectedTab;}},{key:"render",value:function render(){var _this$props2=this.props,tab=_this$props2.tab,selectedTab=_this$props2.selectedTab,children=_this$props2.children;var className=tab===selectedTab?'tab selected':'tab';return _react["default"].createElement("li",{className:className,onClick:this.handleClick},children);}}]);return Tab;}(_react.Component);exports["default"]=Tab;_defineProperty(Tab,"defaultProps",{onTabClick:function onTabClick(){},tab:(0,_uuid.v4)(),selectedTab:(0,_uuid.v4)(),children:[]});
@@ -1 +0,0 @@
1
- "use strict";require("core-js/modules/es.object.define-property.js");require("core-js/modules/es.object.set-prototype-of.js");require("core-js/modules/es.function.bind.js");require("core-js/modules/es.object.get-prototype-of.js");require("core-js/modules/es.reflect.construct.js");require("core-js/modules/es.object.create.js");require("core-js/modules/es.symbol.iterator.js");require("core-js/modules/es.array.iterator.js");require("core-js/modules/es.string.iterator.js");require("core-js/modules/web.dom-collections.iterator.js");require("core-js/modules/es.weak-map.js");require("core-js/modules/es.object.get-own-property-descriptor.js");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;require("core-js/modules/es.symbol.to-primitive.js");require("core-js/modules/es.date.to-primitive.js");require("core-js/modules/es.symbol.js");require("core-js/modules/es.symbol.description.js");require("core-js/modules/es.object.to-string.js");require("core-js/modules/es.number.constructor.js");var _react=_interopRequireWildcard(require("react"));var _uuid=require("uuid");function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj);}return newObj;}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a 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,_toPropertyKey(descriptor.key),descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);Object.defineProperty(Constructor,"prototype",{writable:false});return Constructor;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,"prototype",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _createSuper(Derived){var hasNativeReflectConstruct=_isNativeReflectConstruct();return function _createSuperInternal(){var Super=_getPrototypeOf(Derived),result;if(hasNativeReflectConstruct){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return _possibleConstructorReturn(this,result);};}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}else if(call!==void 0){throw new TypeError("Derived constructors may only return object or undefined");}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true;}catch(e){return false;}}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _defineProperty(obj,key,value){key=_toPropertyKey(key);if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _toPropertyKey(arg){var key=_toPrimitive(arg,"string");return _typeof(key)==="symbol"?key:String(key);}function _toPrimitive(input,hint){if(_typeof(input)!=="object"||input===null)return input;var prim=input[Symbol.toPrimitive];if(prim!==undefined){var res=prim.call(input,hint||"default");if(_typeof(res)!=="object")return res;throw new TypeError("@@toPrimitive must return a primitive value.");}return(hint==="string"?String:Number)(input);}var TabPanel=function(_Component){_inherits(TabPanel,_Component);var _super=_createSuper(TabPanel);function TabPanel(){_classCallCheck(this,TabPanel);return _super.apply(this,arguments);}_createClass(TabPanel,[{key:"shouldComponentUpdate",value:function shouldComponentUpdate(props){if(props.render instanceof Function)return true;return props.children!==this.props.children||props.tab!==this.props.tab||props.selectedTab!==this.props.selectedTab;}},{key:"renderPanel",value:function renderPanel(){var _this$props=this.props,_this$props$render=_this$props.render,render=_this$props$render===void 0?function(){return null;}:_this$props$render,_this$props$children=_this$props.children,children=_this$props$children===void 0?render():_this$props$children;if(children){return _react["default"].createElement("div",{className:"tab-panel"},children);}return null;}},{key:"render",value:function render(){var _this$props2=this.props,tab=_this$props2.tab,selectedTab=_this$props2.selectedTab;if(tab===selectedTab){return this.renderPanel();}return null;}}]);return TabPanel;}(_react.Component);exports["default"]=TabPanel;_defineProperty(TabPanel,"defaultProps",{tab:(0,_uuid.v4)(),selectedTab:(0,_uuid.v4)()});
package/src/index.ts DELETED
@@ -1,23 +0,0 @@
1
- import isTabGroup from './tab-set/is-tab-group'
2
- import isTab from './tab-set/tab-group/is-tab'
3
- import isTabPanel from './tab-set/is-tab-panel'
4
-
5
- import TabGroup from './tab-set/tab-group'
6
- import Tab from './tab-set/tab-group/tab'
7
- import TabPanel from './tab-set/tab-panel'
8
-
9
- import TabSet from './tab-set'
10
-
11
- export {
12
- isTabGroup,
13
- isTab,
14
- isTabPanel
15
- }
16
-
17
- export {
18
- TabGroup,
19
- Tab,
20
- TabPanel
21
- }
22
-
23
- export default TabSet
@@ -1,107 +0,0 @@
1
- import React, { Component, Children, cloneElement } from 'react'
2
- import {
3
- v4
4
- } from 'uuid'
5
-
6
- import isTabPanel from './is-tab-panel'
7
- import isTabGroup from './is-tab-group'
8
-
9
- export interface TabSetProps {
10
- onChange: (selectedTab: string) => void
11
- selectedTab: string
12
- children: JSX.Element | JSX.Element[]
13
- }
14
-
15
- export default class TabSet extends Component<TabSetProps> {
16
- /*
17
- * The selected tab default does not have to be a uuid, but a uuid
18
- * reduces the likelihood that this default has the same value as
19
- * an implemented tab
20
- */
21
- static defaultProps = {
22
- onChange: () => {},
23
- selectedTab: v4(),
24
- children: []
25
- }
26
-
27
- shouldComponentUpdate (props: TabSetProps): boolean {
28
- return (
29
- props.children !== this.props.children ||
30
- props.selectedTab !== this.props.selectedTab
31
- )
32
- }
33
-
34
- handleTabSelect = (selectedTab: string): void => {
35
- if (selectedTab !== this.props.selectedTab) {
36
- const { onChange } = this.props
37
-
38
- this.setState({ selectedTab })
39
-
40
- onChange(selectedTab)
41
- }
42
- }
43
-
44
- mapChildren (children: JSX.Element | JSX.Element[], selectedTab: string): JSX.Element[] {
45
- return Children.map(children, (child) => {
46
- const { type } = child
47
-
48
- if (type) {
49
- const { props } = child
50
-
51
- if (isTabGroup(type)) {
52
- return cloneElement(
53
- child,
54
- {
55
- ...props,
56
- selectedTab,
57
- onTabSelect: this.handleTabSelect
58
- }
59
- )
60
- }
61
-
62
- if (isTabPanel(type)) {
63
- return cloneElement(
64
- child,
65
- {
66
- ...props,
67
- selectedTab
68
- }
69
- )
70
- }
71
-
72
- const {
73
- children
74
- } = props
75
-
76
- if (children) {
77
- return cloneElement(
78
- child,
79
- {
80
- ...props,
81
- children: this.mapChildren(children, selectedTab)
82
- }
83
- )
84
- }
85
- }
86
-
87
- return child
88
- })
89
- }
90
-
91
- getChildren (): JSX.Element[] {
92
- const {
93
- children,
94
- selectedTab
95
- } = this.props
96
-
97
- return this.mapChildren(children, selectedTab)
98
- }
99
-
100
- render (): JSX.Element {
101
- return (
102
- <div className='tab-set'>
103
- {this.getChildren()}
104
- </div>
105
- )
106
- }
107
- }
@@ -1,5 +0,0 @@
1
- import TabGroup from './tab-group'
2
-
3
- const isTabGroup = (c: any): c is TabGroup => c === TabGroup
4
-
5
- export default isTabGroup
@@ -1,5 +0,0 @@
1
- import TabPanel from './tab-panel'
2
-
3
- const isTabPanel = (c: any): c is TabPanel => c === TabPanel
4
-
5
- export default isTabPanel
@@ -1,92 +0,0 @@
1
- import React, { Component, Children, cloneElement } from 'react'
2
- import {
3
- v4
4
- } from 'uuid'
5
-
6
- import isTab from './is-tab'
7
-
8
- interface TabGroupProps {
9
- onTabSelect: (selectedTab: string) => void
10
- children: JSX.Element | JSX.Element[]
11
- selectedTab: string
12
- }
13
-
14
- export default class TabGroup extends Component<TabGroupProps> {
15
- /*
16
- * The selected tab default does not have to be a uuid, but a uuid
17
- * reduces the likelihood that this default has the same value as
18
- * an implemented tab
19
- */
20
- static defaultProps = {
21
- onTabSelect: () => {},
22
- selectedTab: v4(),
23
- children: []
24
- }
25
-
26
- shouldComponentUpdate (props: TabGroupProps): boolean {
27
- return (
28
- props.children !== this.props.children ||
29
- props.selectedTab !== this.props.selectedTab
30
- )
31
- }
32
-
33
- handleTabClick = (tab: string): void => {
34
- const { onTabSelect } = this.props
35
-
36
- onTabSelect(tab)
37
- }
38
-
39
- mapChildren (children: JSX.Element | JSX.Element[], selectedTab: string): JSX.Element[] {
40
- return Children.map(children, (child) => {
41
- const { type } = child
42
-
43
- if (type) {
44
- const { props } = child
45
-
46
- if (isTab(type)) {
47
- return cloneElement(
48
- child,
49
- {
50
- ...props,
51
- selectedTab,
52
- onTabClick: this.handleTabClick
53
- }
54
- )
55
- }
56
-
57
- const {
58
- children
59
- } = props
60
-
61
- if (children) {
62
- return cloneElement(
63
- child,
64
- {
65
- ...props,
66
- children: this.mapChildren(children, selectedTab)
67
- }
68
- )
69
- }
70
- }
71
-
72
- return child
73
- })
74
- }
75
-
76
- getChildren (): JSX.Element[] {
77
- const {
78
- children,
79
- selectedTab
80
- } = this.props
81
-
82
- return this.mapChildren(children, selectedTab)
83
- }
84
-
85
- render (): JSX.Element {
86
- return (
87
- <ul className='tab-group'>
88
- {this.getChildren()}
89
- </ul>
90
- )
91
- }
92
- }
@@ -1,5 +0,0 @@
1
- import Tab from './tab'
2
-
3
- const isTab = (c: any): c is Tab => c === Tab
4
-
5
- export default isTab
@@ -1,57 +0,0 @@
1
- import React, { Component } from 'react'
2
- import {
3
- v4
4
- } from 'uuid'
5
-
6
- export interface TabProps {
7
- onTabClick: (tab: string) => void
8
- children: JSX.Element | JSX.Element[] | string | number | boolean
9
- tab: string
10
- selectedTab: string
11
- }
12
-
13
- export default class Tab extends Component<TabProps> {
14
- /*
15
- * The tab and selected tab defaults do not have to be a uuid, but a uuid
16
- * reduces the likelihood that this default has the same value as
17
- * an implemented tab
18
- */
19
- static defaultProps = {
20
- onTabClick: () => {},
21
- tab: v4(),
22
- selectedTab: v4(),
23
- children: []
24
- }
25
-
26
- shouldComponentUpdate (props: TabProps): boolean {
27
- return (
28
- props.children !== this.props.children ||
29
- props.tab !== this.props.tab ||
30
- props.selectedTab !== this.props.selectedTab
31
- )
32
- }
33
-
34
- handleClick = (): void => {
35
- const { tab, onTabClick } = this.props
36
-
37
- onTabClick(tab)
38
- }
39
-
40
- render (): JSX.Element {
41
- const {
42
- tab,
43
- selectedTab,
44
- children
45
- } = this.props
46
-
47
- const className = (tab === selectedTab)
48
- ? 'tab selected'
49
- : 'tab'
50
-
51
- return (
52
- <li className={className} onClick={this.handleClick}>
53
- {children}
54
- </li>
55
- )
56
- }
57
- }
@@ -1,63 +0,0 @@
1
- import React, { Component } from 'react'
2
- import {
3
- v4
4
- } from 'uuid'
5
-
6
- interface TabPanelProps {
7
- children: JSX.Element | JSX.Element[] | string | number | boolean | undefined | null
8
- tab: string
9
- selectedTab: string
10
- render?: () => JSX.Element | JSX.Element[] | string | number | boolean | undefined | null
11
- }
12
-
13
- export default class TabPanel extends Component<TabPanelProps> {
14
- /*
15
- * The tab and selected tab defaults do not have to be a uuid, but a uuid
16
- * reduces the likelihood that this default has the same value as
17
- * an implemented tab
18
- */
19
- static defaultProps = {
20
- tab: v4(),
21
- selectedTab: v4()
22
- }
23
-
24
- shouldComponentUpdate (props: TabPanelProps): boolean {
25
- if (props.render instanceof Function) return true
26
-
27
- return (
28
- props.children !== this.props.children ||
29
- props.tab !== this.props.tab ||
30
- props.selectedTab !== this.props.selectedTab
31
- )
32
- }
33
-
34
- renderPanel (): JSX.Element | null {
35
- const {
36
- render = () => null,
37
- children = render()
38
- } = this.props
39
-
40
- if (children) {
41
- return (
42
- <div className='tab-panel'>
43
- {children}
44
- </div>
45
- )
46
- }
47
-
48
- return null
49
- }
50
-
51
- render (): JSX.Element | null {
52
- const {
53
- tab,
54
- selectedTab
55
- } = this.props
56
-
57
- if (tab === selectedTab) {
58
- return this.renderPanel()
59
- }
60
-
61
- return null
62
- }
63
- }
package/tsconfig.json DELETED
@@ -1,27 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "jsx": "react",
4
- "module": "es2020",
5
- "target": "es2020",
6
- "moduleResolution": "node",
7
- "noEmit": true,
8
- "strict": true,
9
- "isolatedModules": true,
10
- "noImplicitAny": true,
11
- "allowSyntheticDefaultImports": true,
12
- "allowImportingTsExtensions": true,
13
- "baseUrl": ".",
14
- "paths": {
15
- "react-tab-set": [
16
- "src"
17
- ],
18
- "react-tab-set/*": [
19
- "src/*"
20
- ]
21
- }
22
- },
23
- "include": [
24
- "src/**/*",
25
- "stories/**/*"
26
- ]
27
- }