🎨 Améliore le style des règles
Et abandonne l'import de feuille de style dans le moteur pour lui préférer les styled-componentspull/1050/head
parent
0b651b53ae
commit
aa2525d7df
|
@ -160,14 +160,4 @@
|
|||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.input-error {
|
||||
padding: 0 0.6em;
|
||||
margin-right: 0.6em;
|
||||
font-size: 90%;
|
||||
font-style: italic;
|
||||
color: #c0392b;
|
||||
background: yellow;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Autre idée pour styler les checkboxes https://codepen.io/KenanYusuf/pen/PZKEKd */
|
||||
|
|
|
@ -216,7 +216,7 @@ Un objet javascript de type `EvaluatedNode` contenant la valeur calculée.
|
|||
- `isApplicable`: si l'expression évaluée est une référence à une règle, alors
|
||||
ce booléen indique si la règle est applicable ou non
|
||||
|
||||
#### _function_ formatValue(evaluatedNode, \[options])
|
||||
#### _function_ formatValue(evaluatedNode, \[options\])
|
||||
|
||||
Formate la valeur evaluée.
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
"react-easy-emoji": "^1.4.0",
|
||||
"react-i18next": "^11.4.0",
|
||||
"react-markdown": "^4.3.1",
|
||||
"styled-components": "^5.1.0",
|
||||
"yaml": "^1.9.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
|
|
@ -1,33 +1,28 @@
|
|||
import { map, mapObjIndexed, values } from 'ramda'
|
||||
import React from 'react'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import { Node } from './common'
|
||||
import { Mecanism } from './common'
|
||||
|
||||
export default function Allègement({ nodeValue, explanation: rawExplanation }) {
|
||||
// Don't display attributes with default values
|
||||
let explanation = map(k => (k && !k.isDefault ? k : null), rawExplanation)
|
||||
return (
|
||||
<div>
|
||||
<Node
|
||||
classes="mecanism allègement"
|
||||
name="allègement"
|
||||
value={nodeValue}
|
||||
unit={explanation.unit}
|
||||
>
|
||||
<Mecanism name="allègement" value={nodeValue} unit={explanation.unit}>
|
||||
<ul className="properties">
|
||||
<li key="assiette">
|
||||
<span className="key">assiette: </span>
|
||||
<span className="key">Assiette : </span>
|
||||
<span className="value">{makeJsx(explanation.assiette)}</span>
|
||||
</li>
|
||||
{explanation.franchise && (
|
||||
<li key="franchise">
|
||||
<span className="key">franchise: </span>
|
||||
<span className="key">Franchise : </span>
|
||||
<span className="value">{makeJsx(explanation.franchise)}</span>
|
||||
</li>
|
||||
)}
|
||||
{explanation.décote && (
|
||||
<li key="décote">
|
||||
<span className="key">décote: </span>
|
||||
<span className="key">Décote : </span>
|
||||
<span className="value">
|
||||
<ObjectView data={explanation.décote} />
|
||||
</span>
|
||||
|
@ -35,18 +30,18 @@ export default function Allègement({ nodeValue, explanation: rawExplanation })
|
|||
)}
|
||||
{explanation.abattement && (
|
||||
<li key="abattement">
|
||||
<span className="key">abattement: </span>
|
||||
<span className="key">Abattement : </span>
|
||||
<span className="value">{makeJsx(explanation.abattement)}</span>
|
||||
</li>
|
||||
)}
|
||||
{explanation.plafond && (
|
||||
<li key="plafond">
|
||||
<span className="key">plafond: </span>
|
||||
<span className="key">Plafond : </span>
|
||||
<span className="value">{makeJsx(explanation.plafond)}</span>
|
||||
</li>
|
||||
)}
|
||||
</ul>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
.barème > .nodeHead .name {
|
||||
background: #1abc9c;
|
||||
}
|
||||
|
||||
.barème .key {
|
||||
color: #1abc9c;
|
||||
}
|
||||
.mecanism.barème {
|
||||
border-color: #1abc9c;
|
||||
}
|
||||
|
||||
.barème table {
|
||||
margin: 1em 0;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
font-weight: 400;
|
||||
}
|
||||
.barème table td {
|
||||
padding: 0.1em 0.4em;
|
||||
}
|
||||
.barème table th {
|
||||
font-weight: 600;
|
||||
}
|
||||
.barème table th:first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.barème .tranche:nth-child(2n) {
|
||||
background: #f1f1f1;
|
||||
}
|
||||
.barème .tranche.activated {
|
||||
background: yellow !important ;
|
||||
}
|
|
@ -2,33 +2,35 @@ import classNames from 'classnames'
|
|||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import './Barème.css'
|
||||
import { Node, NodeValuePointer } from './common'
|
||||
import styled from 'styled-components'
|
||||
import { Mecanism, NodeValuePointer } from './common'
|
||||
import { parseUnit } from '../../units'
|
||||
|
||||
export default function Barème({ nodeValue, explanation, unit }) {
|
||||
return (
|
||||
<Node classes="mecanism barème" name="barème" value={nodeValue} unit={unit}>
|
||||
<ul className="properties">
|
||||
<BarèmeAttributes explanation={explanation} />
|
||||
<TrancheTable
|
||||
tranches={explanation.tranches}
|
||||
multiplicateur={explanation.multiplicateur}
|
||||
/>
|
||||
{/* nous avons remarqué que la notion de taux moyen pour un barème à 2 tranches est moins pertinent pour les règles de calcul des indépendants. Règle empirique à faire évoluer ! */}
|
||||
{nodeValue !== null && explanation.tranches.length > 2 && (
|
||||
<>
|
||||
<b>
|
||||
<Trans>Taux moyen</Trans> :{' '}
|
||||
</b>
|
||||
<NodeValuePointer
|
||||
data={(100 * nodeValue) / explanation.assiette.nodeValue}
|
||||
unit={parseUnit('%')}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
</Node>
|
||||
<Mecanism name="barème" value={nodeValue} unit={unit}>
|
||||
<StyledComponent>
|
||||
<ul className="properties">
|
||||
<BarèmeAttributes explanation={explanation} />
|
||||
<TrancheTable
|
||||
tranches={explanation.tranches}
|
||||
multiplicateur={explanation.multiplicateur}
|
||||
/>
|
||||
{/* nous avons remarqué que la notion de taux moyen pour un barème à 2 tranches est moins pertinent pour les règles de calcul des indépendants. Règle empirique à faire évoluer ! */}
|
||||
{nodeValue !== null && explanation.tranches.length > 2 && (
|
||||
<>
|
||||
<b>
|
||||
<Trans>Taux moyen</Trans> :{' '}
|
||||
</b>
|
||||
<NodeValuePointer
|
||||
data={(100 * nodeValue) / explanation.assiette.nodeValue}
|
||||
unit={parseUnit('%')}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
</StyledComponent>
|
||||
</Mecanism>
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -38,14 +40,14 @@ export const BarèmeAttributes = ({ explanation }) => {
|
|||
<>
|
||||
<li key="assiette">
|
||||
<span className="key">
|
||||
<Trans>assiette</Trans>:{' '}
|
||||
<Trans>Assiette</Trans> :{' '}
|
||||
</span>
|
||||
<span className="value">{makeJsx(explanation.assiette)}</span>
|
||||
</li>
|
||||
{multiplicateur && !multiplicateur.isDefault && (
|
||||
<li key="multiplicateur">
|
||||
<span className="key">
|
||||
<Trans>multiplicateur</Trans>:{' '}
|
||||
<Trans>Multiplicateur</Trans> :{' '}
|
||||
</span>
|
||||
<span className="value">{makeJsx(multiplicateur)}</span>
|
||||
</li>
|
||||
|
@ -116,3 +118,28 @@ const Tranche = ({ tranche, multiplicateur }) => {
|
|||
</tr>
|
||||
)
|
||||
}
|
||||
|
||||
export const StyledComponent = styled.div`
|
||||
table {
|
||||
margin: 1em 0;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
font-weight: 400;
|
||||
}
|
||||
table td {
|
||||
padding: 0.1em 0.4em;
|
||||
}
|
||||
table th {
|
||||
font-weight: 600;
|
||||
}
|
||||
table th:first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.tranche:nth-child(2n) {
|
||||
background: var(--lightestColor);
|
||||
}
|
||||
.tranche.activated {
|
||||
background: var(--lighterColor);
|
||||
font-weight: bold;
|
||||
}
|
||||
`
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
.composantes > ol {
|
||||
list-style: none;
|
||||
counter-reset: li;
|
||||
padding-left: 1em;
|
||||
}
|
||||
.composantes > ol > li > ul > li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.composantes .composanteAttributes {
|
||||
display: inline-block;
|
||||
}
|
|
@ -1,33 +1,36 @@
|
|||
import { toPairs } from 'ramda'
|
||||
import React from 'react'
|
||||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import writtenNumbers from '../../locales/writtenNumbers.yaml'
|
||||
import colors from './colors'
|
||||
import { InlineMecanism, Node } from './common'
|
||||
import './Composantes.css'
|
||||
import { InlineMecanismName, Mecanism } from './common'
|
||||
|
||||
export default function Composantes({ nodeValue, explanation, unit }) {
|
||||
const { i18n } = useTranslation()
|
||||
|
||||
return (
|
||||
<Node
|
||||
classes="mecanism composantes"
|
||||
<Mecanism
|
||||
name="composantes"
|
||||
inline
|
||||
displayName={false}
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<>
|
||||
<p
|
||||
style={{
|
||||
marginBottom: '1rem'
|
||||
}}
|
||||
<StyledComponent>
|
||||
<div
|
||||
css={`
|
||||
font-weight: bold;
|
||||
:first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<Trans>La somme de</Trans>{' '}
|
||||
{writtenNumbers[i18n.language][explanation.length]}{' '}
|
||||
<InlineMecanism name="composantes" /> :
|
||||
</p>
|
||||
<InlineMecanismName name="composantes" /> :
|
||||
</div>
|
||||
<ol>
|
||||
{explanation.map((c, i) => [
|
||||
<li className="composante" key={JSON.stringify(c.composante)}>
|
||||
|
@ -66,7 +69,22 @@ export default function Composantes({ nodeValue, explanation, unit }) {
|
|||
</li>
|
||||
])}
|
||||
</ol>
|
||||
</>
|
||||
</Node>
|
||||
</StyledComponent>
|
||||
</Mecanism>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledComponent = styled.div`
|
||||
> ol {
|
||||
list-style: none;
|
||||
counter-reset: li;
|
||||
padding-left: 1em;
|
||||
}
|
||||
> ol > li > ul > li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.composanteAttributes {
|
||||
display: inline-block;
|
||||
}
|
||||
`
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
import React from 'react'
|
||||
import { BarèmeAttributes, TrancheTable } from './Barème'
|
||||
import './Barème.css'
|
||||
import { Node } from './common'
|
||||
import { BarèmeAttributes, TrancheTable, StyledComponent } from './Barème'
|
||||
import { Mecanism } from './common'
|
||||
|
||||
export default function Grille({ nodeValue, explanation, unit }) {
|
||||
return (
|
||||
<Node classes="mecanism barème" name="grille" value={nodeValue} unit={unit}>
|
||||
<ul className="properties">
|
||||
<BarèmeAttributes explanation={explanation} />
|
||||
<TrancheTable
|
||||
tranches={explanation.tranches}
|
||||
multiplicateur={explanation.multiplicateur}
|
||||
/>
|
||||
</ul>
|
||||
</Node>
|
||||
<StyledComponent>
|
||||
<Mecanism name="grille" value={nodeValue} unit={unit}>
|
||||
<ul className="properties">
|
||||
<BarèmeAttributes explanation={explanation} />
|
||||
<TrancheTable
|
||||
tranches={explanation.tranches}
|
||||
multiplicateur={explanation.multiplicateur}
|
||||
/>
|
||||
</ul>
|
||||
</Mecanism>
|
||||
</StyledComponent>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
.inversionNumérique #inversionsPossibles {
|
||||
list-style-type: disc;
|
||||
margin-left: 1rem;
|
||||
}
|
|
@ -1,15 +1,10 @@
|
|||
import React from 'react'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import { Node } from './common'
|
||||
import './InversionNumérique.css'
|
||||
import { Mecanism } from './common'
|
||||
|
||||
export default function InversionNumérique({ nodeValue, explanation }) {
|
||||
return (
|
||||
<Node
|
||||
classes="mecanism inversionNumérique"
|
||||
name="inversion numérique"
|
||||
value={nodeValue}
|
||||
>
|
||||
<Mecanism name="inversion numérique" value={nodeValue}>
|
||||
{explanation.inversionFailed ? (
|
||||
<>
|
||||
{' '}
|
||||
|
@ -47,6 +42,6 @@ export default function InversionNumérique({ nodeValue, explanation }) {
|
|||
</ul>
|
||||
</>
|
||||
)}
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,46 +1,35 @@
|
|||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import { Node } from './common'
|
||||
import './InversionNumérique.css'
|
||||
import { Mecanism } from './common'
|
||||
|
||||
export default function ProductView({ nodeValue, explanation, unit }) {
|
||||
return (
|
||||
// The rate and factor and threshold are given defaut neutral values. If there is nothing to explain, don't display them at all
|
||||
<Node
|
||||
classes="mecanism produit"
|
||||
name="produit"
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<Mecanism name="produit" value={nodeValue} unit={unit}>
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'baseline',
|
||||
flexWrap: 'wrap'
|
||||
}}
|
||||
>
|
||||
<div style={{ textAlign: 'right' }}>
|
||||
{makeJsx(explanation.assiette)}
|
||||
{!explanation.plafond.isDefault && (
|
||||
<div
|
||||
className="ui__ notice"
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'baseline',
|
||||
flexWrap: 'wrap'
|
||||
}}
|
||||
<small
|
||||
css={`
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: flex-end;
|
||||
flex-wrap: wrap;
|
||||
`}
|
||||
>
|
||||
<span
|
||||
style={{
|
||||
...(explanation.plafondActif ? { background: 'yellow' } : {})
|
||||
}}
|
||||
>
|
||||
<span>
|
||||
<Trans>Plafonnée à :</Trans>
|
||||
{makeJsx(explanation.plafond)}
|
||||
</span>
|
||||
</div>
|
||||
{makeJsx(explanation.plafond)}
|
||||
</small>
|
||||
)}
|
||||
</div>
|
||||
{!explanation.facteur.isDefault && (
|
||||
|
@ -52,7 +41,7 @@ export default function ProductView({ nodeValue, explanation, unit }) {
|
|||
justifyContent: 'center'
|
||||
}}
|
||||
>
|
||||
<div style={{ fontSize: '1.6rem', margin: '0.5rem 1rem' }}> × </div>
|
||||
<div style={{ margin: '0 0.6rem' }}> × </div>
|
||||
<div>{makeJsx(explanation.facteur)}</div>
|
||||
</div>
|
||||
)}
|
||||
|
@ -65,11 +54,11 @@ export default function ProductView({ nodeValue, explanation, unit }) {
|
|||
justifyContent: 'center'
|
||||
}}
|
||||
>
|
||||
<div style={{ fontSize: '1.6rem', margin: '0 1rem' }}> × </div>
|
||||
<div style={{ margin: '0 0.6rem' }}> × </div>
|
||||
{makeJsx(explanation.taux)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -2,16 +2,11 @@ import { RuleLinkWithContext } from '../RuleLink'
|
|||
import { makeJsx } from '../../evaluation'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { Node } from './common'
|
||||
import { Mecanism } from './common'
|
||||
|
||||
export default function Recalcul({ nodeValue, explanation }) {
|
||||
return (
|
||||
<Node
|
||||
classes="mecanism recalcul"
|
||||
name="recalcul"
|
||||
value={nodeValue}
|
||||
unit={explanation.unit}
|
||||
>
|
||||
<Mecanism name="recalcul" value={nodeValue} unit={explanation.unit}>
|
||||
<>
|
||||
{explanation.recalcul && (
|
||||
<Trans i18nKey="calcul-avec">
|
||||
|
@ -29,6 +24,6 @@ export default function Recalcul({ nodeValue, explanation }) {
|
|||
))}
|
||||
</ul>
|
||||
</>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,127 +0,0 @@
|
|||
/* mécanisme somme */
|
||||
.somme table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.somme td.blank {
|
||||
background: white;
|
||||
border: 1px solid white;
|
||||
border-right: 1px solid rgba(51, 51, 80, 0.15);
|
||||
}
|
||||
.somme tr {
|
||||
border: 1px solid rgba(51, 51, 80, 0.15);
|
||||
text-align: right;
|
||||
}
|
||||
.somme tr:hover {
|
||||
background: rgba(51, 51, 80, 0.02);
|
||||
}
|
||||
.somme tr .element {
|
||||
text-align: left;
|
||||
padding: 0.1em 0.6em;
|
||||
}
|
||||
.somme tr .value span {
|
||||
text-align: right;
|
||||
}
|
||||
.somme .leaf .name {
|
||||
border: none;
|
||||
}
|
||||
.somme .operator + .element {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.mecanism-somme__row > .element > * > .nodeContent + * {
|
||||
display: none;
|
||||
}
|
||||
.mecanism-somme__row > .element > * > .nodeContent {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.mecanism-somme__row > .element > * > .nodeContent > .operator:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#rule-rules .somme table .leaf .situationValue {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#rule-rules .somme table .situationValue {
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
.somme .nested {
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
.somme .nested tr:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
.somme .noNest {
|
||||
border-bottom: none;
|
||||
}
|
||||
.somme > table {
|
||||
border-bottom: 1px solid rgba(51, 51, 80, 0.15);
|
||||
}
|
||||
|
||||
#sommeBase {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.detailsRow {
|
||||
background: rgba(51, 51, 80, 0.02);
|
||||
}
|
||||
|
||||
.mecanism-somme__table {
|
||||
display: flex;
|
||||
max-width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.mecanism-somme__row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-flow: row nowrap;
|
||||
border-top: 1px solid rgba(51, 51, 80, 0.15);
|
||||
}
|
||||
.mecanism-somme__row:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.mecanism-somme__row .element {
|
||||
flex: 1;
|
||||
max-width: 100%;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
padding: 0.1em 0.4em;
|
||||
padding-top: 0.2em;
|
||||
overflow: hidden;
|
||||
}
|
||||
.mecanism-somme__row .element .unfoldIndication {
|
||||
text-transform: capitalize;
|
||||
flex: 1;
|
||||
margin-left: 0.6rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.mecanism-somme__row .value {
|
||||
padding: 0.1em 0.4em;
|
||||
}
|
||||
.mecanism-somme__row .operator {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.mecanism-somme__row .element .variable,
|
||||
.mecanism-somme__row .element .nodeHead {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.mecanism-somme__row .element .situationValue {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Nested Mecanism */
|
||||
.mecanism-somme__row + .nested {
|
||||
padding-left: 2em;
|
||||
border-top: 1px dashed rgba(51, 51, 80, 0.15);
|
||||
}
|
|
@ -1,18 +1,26 @@
|
|||
import { path } from 'ramda'
|
||||
import React, { useState } from 'react'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import { Node, NodeValuePointer } from './common'
|
||||
import './Somme.css'
|
||||
import { Mecanism, NodeValuePointer } from './common'
|
||||
import styled from 'styled-components'
|
||||
|
||||
const SommeNode = ({ explanation, nodeValue, unit }) => (
|
||||
<Node classes="mecanism somme" name="somme" value={nodeValue} unit={unit}>
|
||||
<Table explanation={explanation} unit={unit} />
|
||||
</Node>
|
||||
<StyledSomme>
|
||||
<Mecanism name="somme" value={nodeValue} unit={unit}>
|
||||
<Table explanation={explanation} unit={unit} />
|
||||
</Mecanism>
|
||||
</StyledSomme>
|
||||
)
|
||||
export default SommeNode
|
||||
|
||||
let Table = ({ explanation, unit }) => (
|
||||
<div className="mecanism-somme__table">
|
||||
<div
|
||||
css={`
|
||||
display: flex;
|
||||
max-width: 100%;
|
||||
flex-direction: column;
|
||||
`}
|
||||
>
|
||||
<div>
|
||||
{explanation.map((v, i) => (
|
||||
<Row key={i} {...{ v, i }} unit={unit} />
|
||||
|
@ -28,8 +36,7 @@ function Row({ v, i, unit }) {
|
|||
isSomme = rowFormula && rowFormula.name == 'somme'
|
||||
|
||||
return [
|
||||
<div
|
||||
className="mecanism-somme__row"
|
||||
<StyledRow
|
||||
key={v.name || i}
|
||||
// className={isSomme ? '' : 'noNest'}
|
||||
onClick={() => setFolded(!folded)}
|
||||
|
@ -42,10 +49,12 @@ function Row({ v, i, unit }) {
|
|||
</button>
|
||||
)}
|
||||
</div>
|
||||
<div className="situationValue value">
|
||||
<NodeValuePointer data={v.nodeValue} unit={v.unit} />
|
||||
</div>
|
||||
</div>,
|
||||
{v.nodeValue != null && (
|
||||
<div className="situationValue value">
|
||||
<NodeValuePointer data={v.nodeValue} unit={v.unit} />
|
||||
</div>
|
||||
)}
|
||||
</StyledRow>,
|
||||
...(isSomme && !folded
|
||||
? [
|
||||
<div className="nested" key={v.name + '-nest'}>
|
||||
|
@ -55,3 +64,70 @@ function Row({ v, i, unit }) {
|
|||
: [])
|
||||
]
|
||||
}
|
||||
|
||||
const StyledSomme = styled.div`
|
||||
/* mécanisme somme */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
tr .element {
|
||||
text-align: left;
|
||||
padding: 0.2rem 0.4rem;
|
||||
}
|
||||
tr .value span {
|
||||
text-align: right;
|
||||
}
|
||||
.nested {
|
||||
padding: 0;
|
||||
}
|
||||
`
|
||||
const StyledRow = styled.div`
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-flow: row nowrap;
|
||||
|
||||
:nth-child(2n) {
|
||||
background-color: var(--lightestColor);
|
||||
}
|
||||
.element .result,
|
||||
.element .nodeValue {
|
||||
display: none;
|
||||
}
|
||||
:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.element {
|
||||
flex: 1;
|
||||
max-width: 100%;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
padding: 0.1em 0.4em;
|
||||
padding-top: 0.2em;
|
||||
overflow: hidden;
|
||||
}
|
||||
.element .unfoldIndication {
|
||||
text-transform: capitalize;
|
||||
flex: 1;
|
||||
margin-left: 0.6rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.element .variable,
|
||||
.element .nodeHead {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.element .situationValue {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Nested Mecanism */
|
||||
+ .nested {
|
||||
padding-left: 2em;
|
||||
border-top: 1px dashed rgba(51, 51, 80, 0.15);
|
||||
}
|
||||
`
|
||||
|
|
|
@ -1,32 +1,28 @@
|
|||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { BarèmeAttributes, TrancheTable } from './Barème'
|
||||
import './Barème.css'
|
||||
import { Node, NodeValuePointer } from './common'
|
||||
import { BarèmeAttributes, TrancheTable, StyledComponent } from './Barème'
|
||||
import { Mecanism, NodeValuePointer } from './common'
|
||||
|
||||
export default function TauxProgressif({ nodeValue, explanation, unit }) {
|
||||
return (
|
||||
<Node
|
||||
classes="mecanism barème"
|
||||
name="taux progressif"
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<ul className="properties">
|
||||
<BarèmeAttributes explanation={explanation} />
|
||||
<TrancheTable
|
||||
tranches={explanation.tranches}
|
||||
multiplicateur={explanation.multiplicateur}
|
||||
/>
|
||||
{nodeValue != null && (
|
||||
<>
|
||||
<b>
|
||||
<Trans>Taux calculé</Trans> :{' '}
|
||||
</b>{' '}
|
||||
<NodeValuePointer data={nodeValue * 100} unit={unit} />
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
</Node>
|
||||
<StyledComponent>
|
||||
<Mecanism name="taux progressif" value={nodeValue} unit={unit}>
|
||||
<ul className="properties">
|
||||
<BarèmeAttributes explanation={explanation} />
|
||||
<TrancheTable
|
||||
tranches={explanation.tranches}
|
||||
multiplicateur={explanation.multiplicateur}
|
||||
/>
|
||||
{nodeValue != null && (
|
||||
<>
|
||||
<b>
|
||||
<Trans>Taux calculé</Trans> :{' '}
|
||||
</b>{' '}
|
||||
<NodeValuePointer data={nodeValue * 100} unit={unit} />
|
||||
</>
|
||||
)}
|
||||
</ul>
|
||||
</Mecanism>
|
||||
</StyledComponent>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
.mecanism.variations > ol {
|
||||
margin-left: 1rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.variations > ol > li {
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
.variations > ol > li span.consequenceType {
|
||||
margin: 0 0.6em 0.6em 0;
|
||||
}
|
||||
|
||||
.variations > ol > li span.consequenceType.satisfied {
|
||||
background: yellow;
|
||||
}
|
|
@ -4,106 +4,133 @@ import emoji from 'react-easy-emoji'
|
|||
import { Trans, useTranslation } from 'react-i18next'
|
||||
import writtenNumbers from '../../locales/writtenNumbers.yaml'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import { InlineMecanism, Node } from './common'
|
||||
import './Variations.css'
|
||||
import { InlineMecanismName, Mecanism } from './common'
|
||||
import styled from 'styled-components'
|
||||
|
||||
export default function Variations({ nodeValue, explanation, unit }) {
|
||||
let [expandedVariation, toggleVariation] = useState(null)
|
||||
const { i18n } = useTranslation()
|
||||
return (
|
||||
<Node
|
||||
classes="mecanism variations"
|
||||
name="variations"
|
||||
inline
|
||||
unit={unit}
|
||||
value={nodeValue}
|
||||
>
|
||||
{' '}
|
||||
<>
|
||||
<p style={{ textTransform: 'capitalize' }}>
|
||||
{writtenNumbers[i18n.language][explanation.length]}
|
||||
<InlineMecanism name="variations" /> :
|
||||
</p>
|
||||
<ol>
|
||||
{explanation.map(({ condition, consequence, satisfied }, i) => (
|
||||
<li
|
||||
key={i}
|
||||
style={{
|
||||
transition: 'all 0.2s',
|
||||
opacity:
|
||||
expandedVariation === i || satisfied || nodeValue == null
|
||||
? 1
|
||||
: 0.8
|
||||
}}
|
||||
>
|
||||
{!satisfied && nodeValue != null && (
|
||||
<>
|
||||
<em>non applicable </em>
|
||||
{expandedVariation !== i ? (
|
||||
<button
|
||||
className="ui__ link-button"
|
||||
onClick={() => toggleVariation(i)}
|
||||
>
|
||||
détails {emoji('▶️')}
|
||||
</button>
|
||||
) : (
|
||||
<button
|
||||
className="ui__ link-button"
|
||||
onClick={() => toggleVariation(null)}
|
||||
>
|
||||
replier {emoji('🔽')}
|
||||
</button>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{(expandedVariation === i || satisfied || nodeValue == null) && (
|
||||
<div style={{ margin: '1rem 0' }}>
|
||||
{!condition.isDefault && (
|
||||
<StyledComponent>
|
||||
<Mecanism
|
||||
name="variations"
|
||||
displayName={false}
|
||||
unit={unit}
|
||||
value={nodeValue}
|
||||
>
|
||||
{' '}
|
||||
<>
|
||||
<div
|
||||
css={`
|
||||
font-weight: bold;
|
||||
:first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
`}
|
||||
>
|
||||
{writtenNumbers[i18n.language][explanation.length]}{' '}
|
||||
<InlineMecanismName name="variations" /> possibles :
|
||||
</div>
|
||||
<ol>
|
||||
{explanation.map(({ condition, consequence, satisfied }, i) => (
|
||||
<li
|
||||
key={i}
|
||||
style={{
|
||||
transition: 'all 0.2s',
|
||||
opacity:
|
||||
expandedVariation === i || satisfied || nodeValue == null
|
||||
? 1
|
||||
: 0.8
|
||||
}}
|
||||
>
|
||||
{!satisfied && nodeValue != null && (
|
||||
<>
|
||||
<em>non applicable </em>
|
||||
{expandedVariation !== i ? (
|
||||
<button
|
||||
className="ui__ link-button"
|
||||
onClick={() => toggleVariation(i)}
|
||||
>
|
||||
détails {emoji('▶️')}
|
||||
</button>
|
||||
) : (
|
||||
<button
|
||||
className="ui__ link-button"
|
||||
onClick={() => toggleVariation(null)}
|
||||
>
|
||||
replier {emoji('🔽')}
|
||||
</button>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{(expandedVariation === i ||
|
||||
satisfied ||
|
||||
nodeValue == null) && (
|
||||
<div style={{ margin: '1rem 0' }}>
|
||||
{!condition.isDefault && (
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
flexWrap: 'wrap',
|
||||
alignItems: 'baseline',
|
||||
marginBottom: '0.4rem'
|
||||
}}
|
||||
>
|
||||
<Trans>Si :</Trans> {makeJsx(condition)}
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
width: 'fit-content',
|
||||
flexWrap: 'wrap',
|
||||
alignItems: 'baseline',
|
||||
marginBottom: '0.4rem'
|
||||
alignItems: 'baseline'
|
||||
}}
|
||||
>
|
||||
<Trans>Si :</Trans> {makeJsx(condition)}
|
||||
<span
|
||||
className={classnames('consequenceType', {
|
||||
satisfied
|
||||
})}
|
||||
>
|
||||
{!condition.isDefault ? (
|
||||
<Trans>Alors</Trans>
|
||||
) : (
|
||||
<Trans>Sinon</Trans>
|
||||
)}{' '}
|
||||
:
|
||||
</span>
|
||||
<span
|
||||
className={classnames('consequenceContent', {
|
||||
satisfied
|
||||
})}
|
||||
>
|
||||
{consequence && makeJsx(consequence)}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
width: 'fit-content',
|
||||
flexWrap: 'wrap',
|
||||
alignItems: 'flex-start'
|
||||
}}
|
||||
>
|
||||
<span
|
||||
className={classnames('consequenceType', {
|
||||
satisfied
|
||||
})}
|
||||
>
|
||||
{!condition.isDefault ? (
|
||||
<Trans>Alors</Trans>
|
||||
) : (
|
||||
<Trans>Sinon</Trans>
|
||||
)}{' '}
|
||||
:
|
||||
</span>
|
||||
<span
|
||||
className={classnames('consequenceContent', {
|
||||
satisfied
|
||||
})}
|
||||
>
|
||||
{consequence && makeJsx(consequence)}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ol>
|
||||
</>
|
||||
</Node>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ol>
|
||||
</>
|
||||
</Mecanism>
|
||||
</StyledComponent>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledComponent = styled.div`
|
||||
.mecanism > ol {
|
||||
margin-left: 1rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.mecanism > ol > li {
|
||||
margin-bottom: 0.3em;
|
||||
}
|
||||
.mecanism > ol > li span.consequenceType {
|
||||
margin: 0 0.6em 0.6em 0;
|
||||
}
|
||||
|
||||
.mecanism > ol > li span.consequenceType.satisfied {
|
||||
background: yellow;
|
||||
}
|
||||
`
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
const colors = {
|
||||
ruleProp: '#9b59b6',
|
||||
'applicable si': '#9b59b6',
|
||||
'non applicable si': '#9b59b6',
|
||||
produit: '#2ecc71',
|
||||
'une de ces conditions': '#3498db',
|
||||
'toutes ces conditions': '#3498db',
|
||||
composantes: '#3498db',
|
||||
variations: '#FF9800',
|
||||
'taux progressif': '#795548',
|
||||
barème: '#607D8B',
|
||||
grille: '#AD1457'
|
||||
}
|
||||
export default name => colors[name] || '#34495e'
|
|
@ -1,15 +1,15 @@
|
|||
const colors = {
|
||||
ruleProp: '#9b59b6',
|
||||
'applicable si': '#9b59b6',
|
||||
'non applicable si': '#9b59b6',
|
||||
somme: '#18457B',
|
||||
allègement: '#B73731',
|
||||
produit: '#2ecc71',
|
||||
'une de ces conditions': '#3498db',
|
||||
'toutes ces conditions': '#3498db',
|
||||
composantes: '#3498db',
|
||||
variations: '#FF9800',
|
||||
'taux progressif': '#795548',
|
||||
barème: '#607D8B',
|
||||
barème: '#9B296F',
|
||||
grille: '#AD1457'
|
||||
}
|
||||
|
||||
export default (name: string) => colors[name] || '#34495e'
|
||||
export default name => colors[name] || 'palevioletred'
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import { default as classNames, default as classnames } from 'classnames'
|
||||
import { contains, isNil } from 'ramda'
|
||||
import classnames from 'classnames'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import { formatValue } from '../../format'
|
||||
import { Evaluation, ParsedRule, Types, Unit } from '../../types'
|
||||
import { Evaluation, ParsedRule, Types, Unit, EvaluatedNode } from '../../types'
|
||||
import { capitalise0 } from '../../utils'
|
||||
import { RuleLinkWithContext } from '../RuleLink'
|
||||
import mecanismColors from './colors'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
|
||||
type NodeValuePointerProps = {
|
||||
data: Evaluation<Types>
|
||||
|
@ -14,94 +15,179 @@ type NodeValuePointerProps = {
|
|||
}
|
||||
|
||||
export const NodeValuePointer = ({ data, unit }: NodeValuePointerProps) => (
|
||||
<span
|
||||
className={classnames('situationValue', {
|
||||
boolean: typeof data == 'boolean'
|
||||
})}
|
||||
<small
|
||||
className="nodeValue"
|
||||
style={{
|
||||
background: 'white',
|
||||
borderBottom: '0 !important',
|
||||
marginLeft: '0.4rem',
|
||||
margin: '0 0.2rem',
|
||||
padding: '0 0.2rem',
|
||||
textDecoration: 'none !important',
|
||||
boxShadow: '2px 2px 4px 1px #d9d9d9, 0 0 0 1px #d9d9d9',
|
||||
boxShadow: '0px 1px 2px 1px #d9d9d9, 0 0 0 1px #d9d9d9',
|
||||
lineHeight: '1.6em',
|
||||
borderRadius: '0.2rem'
|
||||
}}
|
||||
>
|
||||
{formatValue({ nodeValue: data, unit, language: 'fr' })}
|
||||
</span>
|
||||
</small>
|
||||
)
|
||||
|
||||
// Un élément du graphe de calcul qui a une valeur interprétée (à afficher)
|
||||
type NodeProps = {
|
||||
classes: string
|
||||
name: string
|
||||
value: NodeValuePointerProps['data']
|
||||
unit: NodeValuePointerProps['unit']
|
||||
inline?: boolean
|
||||
value: Evaluation<Types>
|
||||
unit: Unit
|
||||
children: React.ReactNode
|
||||
displayName?: boolean
|
||||
}
|
||||
|
||||
export function Node({
|
||||
classes,
|
||||
name,
|
||||
value,
|
||||
children,
|
||||
inline,
|
||||
unit
|
||||
}: NodeProps) {
|
||||
const termDefinition = contains('mecanism', classes) && name
|
||||
|
||||
export function Operation({ value, children, unit }: NodeProps) {
|
||||
return (
|
||||
<div
|
||||
className={classNames(classes, 'node', { inline })}
|
||||
style={termDefinition ? { borderColor: mecanismColors(name) } : {}}
|
||||
>
|
||||
{name && !inline && (
|
||||
<div className="nodeHead">
|
||||
<a
|
||||
className="name"
|
||||
style={termDefinition ? { background: mecanismColors(name) } : {}}
|
||||
data-term-definition={termDefinition}
|
||||
>
|
||||
<Trans>{name}</Trans>
|
||||
</a>
|
||||
</div>
|
||||
)}
|
||||
{children}{' '}
|
||||
{name ? (
|
||||
!isNil(value) && (
|
||||
<div className="mecanism-result">
|
||||
= <NodeValuePointer data={value} unit={unit} />
|
||||
</div>
|
||||
)
|
||||
) : (
|
||||
<span>
|
||||
{(value as any) !== true &&
|
||||
(value as any) !== false &&
|
||||
!isNil(value) && <span className="operator"> = </span>}
|
||||
<StyledOperation className="operation">
|
||||
{children}
|
||||
{value != null && (
|
||||
<span className="result">
|
||||
<small> = </small>
|
||||
<NodeValuePointer data={value} unit={unit} />
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</StyledOperation>
|
||||
)
|
||||
}
|
||||
|
||||
export function InlineMecanism({ name }: { name: string }) {
|
||||
export function Mecanism({
|
||||
name,
|
||||
value,
|
||||
children,
|
||||
unit,
|
||||
displayName = true
|
||||
}: NodeProps) {
|
||||
return (
|
||||
<span className="inlineMecanism">
|
||||
<a
|
||||
className="name"
|
||||
data-term-definition={name}
|
||||
style={{ background: mecanismColors(name) }}
|
||||
>
|
||||
<Trans>{name}</Trans>
|
||||
</a>
|
||||
</span>
|
||||
<StyledMecanism name={name}>
|
||||
{displayName && (
|
||||
<StyledMecanismName name={name}>
|
||||
<Trans>{name}</Trans>
|
||||
</StyledMecanismName>
|
||||
)}
|
||||
<>
|
||||
{children}
|
||||
|
||||
{value != null && (
|
||||
<div
|
||||
style={{
|
||||
textAlign: 'right',
|
||||
marginTop: '0.4rem',
|
||||
fontWeight: 'bold'
|
||||
}}
|
||||
>
|
||||
<small> = </small>
|
||||
<NodeValuePointer data={value} unit={unit} />
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
</StyledMecanism>
|
||||
)
|
||||
}
|
||||
|
||||
export const InfixMecanism = ({
|
||||
value,
|
||||
children
|
||||
}: {
|
||||
value: EvaluatedNode
|
||||
children: React.ReactNode
|
||||
}) => {
|
||||
return (
|
||||
<div
|
||||
className="infix-mecanism"
|
||||
css={`
|
||||
border: 1px solid var(--darkColor);
|
||||
padding: 1rem;
|
||||
border-radius: 0.3rem;
|
||||
.value > .infix-mecanism {
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
.value > :not(.infix-mecanism) {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<div className="value">{makeJsx(value)}</div>
|
||||
{children}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export const InlineMecanismName = ({ name }: { name: string }) => {
|
||||
return (
|
||||
<StyledMecanismName inline name={name}>
|
||||
<Trans>{name}</Trans>
|
||||
</StyledMecanismName>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledOperation = styled.span`
|
||||
::before {
|
||||
content: '(';
|
||||
}
|
||||
> .operation ::before,
|
||||
> .operation ::after {
|
||||
content: '';
|
||||
}
|
||||
::after {
|
||||
content: ')';
|
||||
}
|
||||
.result {
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
.operation .result {
|
||||
display: none;
|
||||
}
|
||||
`
|
||||
|
||||
const StyledMecanism = styled.div<{ name: string }>`
|
||||
border: 1px solid;
|
||||
max-width: 100%;
|
||||
border-radius: 3px;
|
||||
padding: 1rem;
|
||||
position: relative;
|
||||
flex: 1;
|
||||
border-color: ${({ name }) => mecanismColors(name)};
|
||||
|
||||
.key {
|
||||
font-weight: bold;
|
||||
}
|
||||
`
|
||||
|
||||
const StyledMecanismName = styled.button<{ name: string; inline?: boolean }>`
|
||||
background-color: ${({ name }) => mecanismColors(name)};
|
||||
font-size: inherit;
|
||||
font-weight: inherit;
|
||||
font-family: inherit;
|
||||
padding: 0.4rem 0.6rem;
|
||||
color: white;
|
||||
transition: hover 0.2s;
|
||||
${props =>
|
||||
props.inline
|
||||
? `
|
||||
display: inline-block;
|
||||
border-radius: 0.3rem;
|
||||
`
|
||||
: `
|
||||
margin-bottom: 0.8rem;
|
||||
display: block;
|
||||
|
||||
margin-top: -1rem;
|
||||
margin-left: -1rem;
|
||||
border-bottom-right-radius: 0.3rem;
|
||||
::first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
`}
|
||||
:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
`
|
||||
|
||||
type LeafProps = {
|
||||
className: string
|
||||
rule: ParsedRule
|
||||
|
@ -114,7 +200,7 @@ type LeafProps = {
|
|||
export function Leaf({ className, rule, nodeValue, filter, unit }: LeafProps) {
|
||||
const title = rule.title || capitalise0(rule.name)
|
||||
return (
|
||||
<span className={classNames(className, 'leaf')}>
|
||||
<span className={classnames(className, 'leaf')}>
|
||||
<span className="nodeHead">
|
||||
<RuleLinkWithContext dottedName={rule.dottedName}>
|
||||
<span className="name">
|
||||
|
@ -122,7 +208,7 @@ export function Leaf({ className, rule, nodeValue, filter, unit }: LeafProps) {
|
|||
{filter}
|
||||
</span>
|
||||
</RuleLinkWithContext>
|
||||
{!isNil(nodeValue) && <NodeValuePointer data={nodeValue} unit={unit} />}
|
||||
{nodeValue != null && <NodeValuePointer data={nodeValue} unit={unit} />}
|
||||
</span>
|
||||
</span>
|
||||
)
|
||||
|
|
|
@ -1,203 +0,0 @@
|
|||
/*
|
||||
Règles CSS d'affichage des algorithmes
|
||||
*/
|
||||
|
||||
.situationValue {
|
||||
text-decoration: underline white;
|
||||
border-bottom-left-radius: 3px;
|
||||
font-weight: 400;
|
||||
color: black;
|
||||
font-family: monospace;
|
||||
}
|
||||
.name {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.node.inlineExpression:not(.comparison) {
|
||||
padding-left: 0;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.nodeContent {
|
||||
margin-right: 0.3em;
|
||||
}
|
||||
#rule-rules .inlineExpression:not(.comparison) > .situationValue {
|
||||
margin-left: 0.3em;
|
||||
margin-bottom: 0.6em;
|
||||
margin-top: 0.3em;
|
||||
align-items: flex-end;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#declenchement > ul {
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
#declenchement > ul > li {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.mecanism > .nodeHead {
|
||||
border-color: inherit;
|
||||
margin-top: -1rem;
|
||||
margin-left: -1rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
.inlineMecanism .name,
|
||||
.mecanism > .nodeHead .name {
|
||||
padding: 0.2em 0.8em;
|
||||
display: inline-block;
|
||||
color: white !important;
|
||||
font-weight: 600;
|
||||
border-bottom-right-radius: 6px;
|
||||
}
|
||||
.inlineMecanism .name {
|
||||
margin: 0 0.1em;
|
||||
padding: 0.2em 0.4em;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.mecanism > .nodeHead .name::first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
.mecanism > .nodeHead > .situationValue {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
padding: 0.2rem 1rem;
|
||||
border: 1px solid;
|
||||
border-color: inherit;
|
||||
font-weight: 600;
|
||||
border-bottom: none;
|
||||
border-right: none;
|
||||
border-radius: 0;
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
[data-term-definition] {
|
||||
cursor: pointer;
|
||||
}
|
||||
[data-term-definition]:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.mecanism .properties .key {
|
||||
display: inline-block;
|
||||
margin-bottom: 0.6em;
|
||||
margin-right: 0.8em;
|
||||
}
|
||||
|
||||
.mecanism.produit .key {
|
||||
color: #2ecc71;
|
||||
}
|
||||
|
||||
.produit li .key {
|
||||
margin-right: 0.6em;
|
||||
}
|
||||
|
||||
.leaf .situationValue {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.variable a {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.percentage .name {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.inlineExpression .operator {
|
||||
margin: 0 0.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.json {
|
||||
font-size: 60%;
|
||||
}
|
||||
|
||||
.mecanism.inversion li {
|
||||
margin-top: 0.6em;
|
||||
}
|
||||
|
||||
.mecanism {
|
||||
border: 1px solid;
|
||||
max-width: 100%;
|
||||
border-radius: 3px;
|
||||
padding: 1rem;
|
||||
position: relative;
|
||||
flex: 1;
|
||||
}
|
||||
.mecanism-result {
|
||||
position: relative;
|
||||
bottom: calc(-1rem + 2px);
|
||||
text-align: right;
|
||||
}
|
||||
.mecanism .mecanism {
|
||||
flex: initial;
|
||||
}
|
||||
.mecanism + .mecanism {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.mecanism .key::first-letter {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
.mecanism ul.properties > li {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.mecanism ul > li > .value {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.variable,
|
||||
.operator {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.nodeHead .name .situationValue:not(.boolean)::before {
|
||||
content: '(';
|
||||
}
|
||||
|
||||
.nodeHead .name .situationValue:not(.boolean)::after {
|
||||
content: ')';
|
||||
}
|
||||
|
||||
/* Remove style for conditions */
|
||||
|
||||
.mecanism.cond *:not(.nodeContent) > .variable .name,
|
||||
.mecanism.variations *:not(.nodeContent) > .variable .name,
|
||||
.inlineExpression.comparison {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
.mecanism.cond *:not(.nodeContent) > .variable .name .situationValue,
|
||||
.mecanism.variations
|
||||
> condition
|
||||
> *:first-child
|
||||
*:not(.nodeContent)
|
||||
> .variable
|
||||
.name
|
||||
.situationValue,
|
||||
.inlineExpression.comparison > .situationValue {
|
||||
order: -1;
|
||||
}
|
||||
|
||||
.mecanism.cond *:not(.nodeContent) > .variable .name > .situationValue,
|
||||
.mecanism.variations
|
||||
> condition
|
||||
> *:first-child
|
||||
*:not(.nodeContent)
|
||||
> .variable
|
||||
.name
|
||||
> .situationValue {
|
||||
margin-bottom: -5px;
|
||||
background-color: white;
|
||||
margin-left: 0 !important;
|
||||
}
|
|
@ -3,7 +3,6 @@ import React from 'react'
|
|||
import { Trans } from 'react-i18next'
|
||||
import { EvaluatedRule } from '../../types'
|
||||
import { makeJsx } from '../../evaluation'
|
||||
import './Algorithm.css'
|
||||
|
||||
const Conditions = ({
|
||||
'rendu non applicable': disabledBy,
|
||||
|
@ -36,7 +35,14 @@ const Conditions = ({
|
|||
<h2>
|
||||
<Trans>Déclenchement</Trans>
|
||||
</h2>
|
||||
<ul>{listElements}</ul>
|
||||
<ul
|
||||
css={`
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
`}
|
||||
>
|
||||
{listElements}
|
||||
</ul>
|
||||
</>
|
||||
) : null
|
||||
}
|
||||
|
@ -44,7 +50,7 @@ const Conditions = ({
|
|||
function ShowIfDisabled({ dependency }: { dependency: EvaluatedRule }) {
|
||||
return (
|
||||
<li>
|
||||
<span style={{ background: 'yellow' }}>
|
||||
<span style={{ background: 'var(--lighterColor)', fontWeight: 'bold' }}>
|
||||
<Trans>Désactivée</Trans>
|
||||
</span>{' '}
|
||||
<Trans>car dépend de</Trans> {makeJsx(dependency)}
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
.rule-header {
|
||||
padding: 1rem;
|
||||
}
|
||||
.rule-header__breadcrumb {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rule-header__breadcrumb > li {
|
||||
display: inline;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rule-header__title {
|
||||
margin: 0.6rem 0;
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
import React from 'react'
|
||||
import { ruleParents } from '../../ruleUtils'
|
||||
import './Header.css'
|
||||
import { RuleLinkWithContext } from '../RuleLink'
|
||||
import styled from 'styled-components'
|
||||
|
||||
export default function RuleHeader({ dottedName }) {
|
||||
return (
|
||||
<header className="ui__ plain card rule-header">
|
||||
<StyledHeader className="ui__ plain card rule-header">
|
||||
<ul className="rule-header__breadcrumb">
|
||||
{ruleParents(dottedName)
|
||||
.reverse()
|
||||
|
@ -23,6 +23,23 @@ export default function RuleHeader({ dottedName }) {
|
|||
style={{ textDecoration: 'none' }}
|
||||
/>
|
||||
</h1>
|
||||
</header>
|
||||
</StyledHeader>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledHeader = styled.header`
|
||||
padding: 1rem;
|
||||
.rule-header__breadcrumb {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rule-header__breadcrumb > li {
|
||||
display: inline;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rule-header__title {
|
||||
margin: 0.6rem 0;
|
||||
}
|
||||
`
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
.references {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
.references a {
|
||||
flex: 1;
|
||||
min-width: 45%;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.references li {
|
||||
margin-bottom: 0.6em;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
#noOfficialReferences {
|
||||
text-align: left;
|
||||
font-style: italic;
|
||||
}
|
||||
.references .imageWrapper {
|
||||
width: 4.5rem;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
.references img {
|
||||
max-height: 3rem;
|
||||
vertical-align: sub;
|
||||
max-width: 100%;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
|
||||
li#complementary {
|
||||
margin-top: 1.2em;
|
||||
}
|
||||
li#complementary a {
|
||||
font-style: italic;
|
||||
text-decoration: none;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#complementary i {
|
||||
margin-right: 0.6em;
|
||||
}
|
|
@ -2,7 +2,7 @@ import references from './références/références.yaml'
|
|||
import { toPairs } from 'ramda'
|
||||
import React from 'react'
|
||||
import { capitalise0 } from '../../utils'
|
||||
import './References.css'
|
||||
import styled from 'styled-components'
|
||||
|
||||
const findRefKey = (link: string) =>
|
||||
Object.keys(references).find(r => link.includes(r))
|
||||
|
@ -56,10 +56,41 @@ type ReferencesProps = {
|
|||
export default function References({ refs }: ReferencesProps) {
|
||||
const references = toPairs(refs)
|
||||
return (
|
||||
<ul className="references">
|
||||
<StyledComponent>
|
||||
{references.map(([name, link]) => (
|
||||
<Ref key={link} name={name} link={link} />
|
||||
))}
|
||||
</ul>
|
||||
</StyledComponent>
|
||||
)
|
||||
}
|
||||
|
||||
const StyledComponent = styled.ul`
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
a {
|
||||
flex: 1;
|
||||
min-width: 45%;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.6em;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.imageWrapper {
|
||||
width: 4.5rem;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
img {
|
||||
max-height: 3rem;
|
||||
vertical-align: sub;
|
||||
max-width: 100%;
|
||||
border-radius: 0.3em;
|
||||
}
|
||||
`
|
||||
|
|
|
@ -12,11 +12,12 @@ import {
|
|||
} from 'ramda'
|
||||
import React from 'react'
|
||||
import Allègement from './components/mecanisms/Allègement'
|
||||
import { Node } from './components/mecanisms/common'
|
||||
import { Mecanism } from './components/mecanisms/common'
|
||||
import InversionNumérique from './components/mecanisms/InversionNumérique'
|
||||
import Product from './components/mecanisms/Product'
|
||||
import Recalcul from './components/mecanisms/Recalcul'
|
||||
import Somme from './components/mecanisms/Somme'
|
||||
import { RuleLinkWithContext } from './components/RuleLink'
|
||||
import { typeWarning } from './error'
|
||||
import {
|
||||
collectNodeMissing,
|
||||
|
@ -31,7 +32,6 @@ import {
|
|||
import { decompose } from './mecanisms/utils'
|
||||
import variations from './mecanisms/variations'
|
||||
import { convertNodeToUnit } from './nodeUnits'
|
||||
import { EvaluatedRule } from './types'
|
||||
import uniroot from './uniroot'
|
||||
import {
|
||||
areUnitConvertible,
|
||||
|
@ -40,7 +40,6 @@ import {
|
|||
parseUnit,
|
||||
serializeUnit
|
||||
} from './units'
|
||||
import { RuleLinkWithContext } from './components/RuleLink'
|
||||
|
||||
export const mecanismOneOf = (recurse, k, v) => {
|
||||
if (!is(Array, v)) throw new Error('should be array')
|
||||
|
@ -48,18 +47,13 @@ export const mecanismOneOf = (recurse, k, v) => {
|
|||
const explanation = map(recurse, v)
|
||||
|
||||
const jsx = ({ nodeValue, explanation, unit }) => (
|
||||
<Node
|
||||
classes="mecanism conditions list"
|
||||
name="une de ces conditions"
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<Mecanism name="une de ces conditions" value={nodeValue} unit={unit}>
|
||||
<ul>
|
||||
{explanation.map((item, i) => (
|
||||
<li key={i}>{makeJsx(item)}</li>
|
||||
))}
|
||||
</ul>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
|
||||
const evaluate = (cache, situation, parsedRules, node) => {
|
||||
|
@ -99,18 +93,13 @@ export const mecanismAllOf = (recurse, k, v) => {
|
|||
const explanation = map(recurse, v)
|
||||
|
||||
const jsx = ({ nodeValue, explanation, unit }) => (
|
||||
<Node
|
||||
classes="mecanism conditions list"
|
||||
name="toutes ces conditions"
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<Mecanism name="toutes ces conditions" value={nodeValue} unit={unit}>
|
||||
<ul>
|
||||
{explanation.map((item, i) => (
|
||||
<li key={i}>{makeJsx(item)}</li>
|
||||
))}
|
||||
</ul>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
|
||||
const evaluate = (cache, situation, parsedRules, node) => {
|
||||
|
@ -512,12 +501,7 @@ export const mecanismMax = (recurse, k, v) => {
|
|||
const evaluate = evaluateArray(max, Number.NEGATIVE_INFINITY)
|
||||
|
||||
const jsx = ({ nodeValue, explanation, unit }) => (
|
||||
<Node
|
||||
classes="mecanism list maximum"
|
||||
name="le maximum de"
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<Mecanism name="le maximum de" value={nodeValue} unit={unit}>
|
||||
<ul>
|
||||
{explanation.map((item, i) => (
|
||||
<li key={i}>
|
||||
|
@ -526,7 +510,7 @@ export const mecanismMax = (recurse, k, v) => {
|
|||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
|
||||
return {
|
||||
|
@ -546,12 +530,7 @@ export const mecanismMin = (recurse, k, v) => {
|
|||
const evaluate = evaluateArray(min, Infinity)
|
||||
|
||||
const jsx = ({ nodeValue, explanation, unit }) => (
|
||||
<Node
|
||||
classes="mecanism list minimum"
|
||||
name="le minimum de"
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<Mecanism name="le minimum de" value={nodeValue} unit={unit}>
|
||||
<ul>
|
||||
{explanation.map((item, i) => (
|
||||
<li key={i}>
|
||||
|
@ -560,7 +539,7 @@ export const mecanismMin = (recurse, k, v) => {
|
|||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
|
||||
return {
|
||||
|
|
|
@ -1,17 +1,12 @@
|
|||
import {
|
||||
defaultNode,
|
||||
evaluateNode,
|
||||
makeJsx,
|
||||
mergeAllMissing
|
||||
} from '../evaluation'
|
||||
import { Node } from '../components/mecanisms/common'
|
||||
import { simplifyNodeUnit } from '../nodeUnits'
|
||||
import { mapTemporal, pureTemporal, temporalAverage } from '../temporal'
|
||||
import { serializeUnit } from '../units'
|
||||
import { EvaluatedRule, Evaluation, EvaluatedNode } from '../types'
|
||||
import { has } from 'ramda'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { InfixMecanism } from '../components/mecanisms/common'
|
||||
import { defaultNode, evaluateNode, mergeAllMissing } from '../evaluation'
|
||||
import { simplifyNodeUnit } from '../nodeUnits'
|
||||
import { mapTemporal, pureTemporal, temporalAverage } from '../temporal'
|
||||
import { EvaluatedNode, EvaluatedRule, Evaluation } from '../types'
|
||||
import { serializeUnit } from '../units'
|
||||
|
||||
type MecanismRoundProps = {
|
||||
nodeValue: Evaluation<number>
|
||||
|
@ -25,27 +20,20 @@ type ArrondiExplanation = {
|
|||
|
||||
function MecanismRound({ nodeValue, explanation }: MecanismRoundProps) {
|
||||
return (
|
||||
<Node
|
||||
classes="mecanism arrondi"
|
||||
name="arrondi"
|
||||
value={nodeValue}
|
||||
unit={explanation.value.unit}
|
||||
>
|
||||
<>
|
||||
{makeJsx(explanation.value)}
|
||||
{explanation.decimals.nodeValue !== false &&
|
||||
explanation.decimals.isDefault != false && (
|
||||
<p>
|
||||
<Trans
|
||||
i18nKey="arrondi-to-decimals"
|
||||
count={explanation.decimals.nodeValue ?? undefined}
|
||||
>
|
||||
Arrondi à {{ count: explanation.decimals.nodeValue }} décimales
|
||||
</Trans>
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
</Node>
|
||||
<InfixMecanism value={explanation.value}>
|
||||
{explanation.decimals.nodeValue !== false &&
|
||||
explanation.decimals.isDefault != false && (
|
||||
<p>
|
||||
<Trans
|
||||
i18nKey="arrondi-to-decimals"
|
||||
count={explanation.decimals.nodeValue ?? undefined}
|
||||
>
|
||||
<strong>Arrondi à : </strong>
|
||||
{{ count: explanation.decimals.nodeValue }} décimales
|
||||
</Trans>
|
||||
</p>
|
||||
)}
|
||||
</InfixMecanism>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -6,13 +6,13 @@ import {
|
|||
mergeMissing,
|
||||
parseObject
|
||||
} from '../evaluation'
|
||||
import { Node } from '../components/mecanisms/common'
|
||||
import { Mecanism } from '../components/mecanisms/common'
|
||||
import { parseUnit } from '../units'
|
||||
import React from 'react'
|
||||
|
||||
function MecanismDurée({ nodeValue, explanation, unit }) {
|
||||
return (
|
||||
<Node classes="mecanism durée" name="durée" value={nodeValue} unit={unit}>
|
||||
<Mecanism name="durée" value={nodeValue} unit={unit}>
|
||||
<>
|
||||
<p>
|
||||
<strong className="key">Depuis : </strong>
|
||||
|
@ -23,7 +23,7 @@ function MecanismDurée({ nodeValue, explanation, unit }) {
|
|||
<span className="value">{makeJsx(explanation["jusqu'à"])}</span>
|
||||
</p>
|
||||
</>
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
}
|
||||
const todayString = convertToString(new Date())
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react'
|
||||
import { Node } from '../components/mecanisms/common'
|
||||
import { InfixMecanism } from '../components/mecanisms/common'
|
||||
import { typeWarning } from '../error'
|
||||
import {
|
||||
defaultNode,
|
||||
|
@ -9,42 +9,38 @@ import {
|
|||
} from '../evaluation'
|
||||
import { convertNodeToUnit } from '../nodeUnits'
|
||||
|
||||
function MecanismEncadrement({ nodeValue, explanation, unit }) {
|
||||
function MecanismEncadrement({ nodeValue, explanation }) {
|
||||
return (
|
||||
<div>
|
||||
{makeJsx(explanation.valeur)}
|
||||
<InfixMecanism value={explanation.valeur}>
|
||||
{!explanation.plancher.isDefault && (
|
||||
<>
|
||||
<br />
|
||||
|
||||
<span
|
||||
<p
|
||||
style={
|
||||
nodeValue === explanation.plancher.nodeValue
|
||||
? { background: 'yellow' }
|
||||
? { background: 'var(--lighterColor)', fontWeight: 'bold' }
|
||||
: {}
|
||||
}
|
||||
>
|
||||
<strong className="key">Minimum : </strong>
|
||||
<span className="value">{makeJsx(explanation.plancher)}</span>
|
||||
</span>
|
||||
<strong>Minimum : </strong>
|
||||
{makeJsx(explanation.plancher)}
|
||||
</p>
|
||||
</>
|
||||
)}
|
||||
{!explanation.plafond.isDefault && (
|
||||
<>
|
||||
<br />
|
||||
<span
|
||||
<p
|
||||
style={
|
||||
nodeValue === explanation.plancher.nodeValue
|
||||
? { background: 'yellow' }
|
||||
? { background: 'var(--lighterColor)', fontWeight: 'bold' }
|
||||
: {}
|
||||
}
|
||||
>
|
||||
<strong className="key">Plafonné à : </strong>
|
||||
<span className="value">{makeJsx(explanation.plafond)}</span>
|
||||
</span>
|
||||
<strong>Plafonné à : </strong>
|
||||
{makeJsx(explanation.plafond)}
|
||||
</p>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</InfixMecanism>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { convertToDate } from '../date'
|
||||
import { typeWarning } from '../error'
|
||||
import { evaluateNode, makeJsx, mergeMissing } from '../evaluation'
|
||||
import { Node } from '../components/mecanisms/common'
|
||||
import { Operation } from '../components/mecanisms/common'
|
||||
import { convertNodeToUnit } from '../nodeUnits'
|
||||
import { liftTemporal2, pureTemporal, temporalAverage } from '../temporal'
|
||||
import { inferUnit, serializeUnit } from '../units'
|
||||
|
@ -87,20 +87,12 @@ export default (k, operatorFunction, symbol) => (recurse, k, v) => {
|
|||
let unit = inferUnit(k, [node1.unit, node2.unit])
|
||||
|
||||
let jsx = ({ nodeValue, explanation, unit }) => (
|
||||
<Node classes={'inlineExpression ' + k} value={nodeValue} unit={unit}>
|
||||
<span className="nodeContent">
|
||||
{(explanation[0].nodeValue !== 0 ||
|
||||
symbol !== '−' ||
|
||||
!v.explanation[0].constant) && (
|
||||
<>
|
||||
<span className="fa fa" />
|
||||
{makeJsx(explanation[0])}
|
||||
</>
|
||||
)}
|
||||
<span className="operator">{symbol || k}</span>
|
||||
{makeJsx(explanation[1])}
|
||||
</span>
|
||||
</Node>
|
||||
<Operation value={nodeValue} unit={unit}>
|
||||
{(explanation[0].nodeValue !== 0 ||
|
||||
symbol !== '−' ||
|
||||
!v.explanation[0].constant) && <>{makeJsx(explanation[0])}</>}{' '}
|
||||
{symbol || k} {makeJsx(explanation[1])}
|
||||
</Operation>
|
||||
)
|
||||
|
||||
return {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { evolve, map } from 'ramda'
|
||||
import React from 'react'
|
||||
import { Trans } from 'react-i18next'
|
||||
import { Node } from './components/mecanisms/common'
|
||||
import { Mecanism } from './components/mecanisms/common'
|
||||
import { RuleLinkWithContext } from './components/RuleLink'
|
||||
import { warning } from './error'
|
||||
import evaluate from './evaluateRule'
|
||||
|
@ -249,18 +249,13 @@ const evolveCond = (dottedName, rule, rules, parsedRules) => value => {
|
|||
const child = parse(rules, rule, parsedRules)(value)
|
||||
|
||||
const jsx = ({ nodeValue, explanation, unit }) => (
|
||||
<Node
|
||||
classes="ruleProp mecanism cond"
|
||||
name={dottedName}
|
||||
value={nodeValue}
|
||||
unit={unit}
|
||||
>
|
||||
<Mecanism name={dottedName} value={nodeValue} unit={unit}>
|
||||
{explanation.category === 'variable' ? (
|
||||
<div className="node">{makeJsx(explanation)}</div>
|
||||
) : (
|
||||
makeJsx(explanation)
|
||||
)}
|
||||
</Node>
|
||||
</Mecanism>
|
||||
)
|
||||
|
||||
return {
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
import 'styled-components/cssprop'
|
|
@ -1,7 +1,7 @@
|
|||
/* eslint-env node */
|
||||
|
||||
const path = require('path')
|
||||
const { commonLoaders, styleLoader } = require('../webpack/common')
|
||||
const { commonLoaders } = require('../webpack/common')
|
||||
|
||||
const common = {
|
||||
resolve: {
|
||||
|
@ -10,14 +10,14 @@ const common = {
|
|||
mode: 'development',
|
||||
entry: path.resolve(__dirname, 'source', 'index.ts'),
|
||||
module: {
|
||||
rules: [...commonLoaders(), styleLoader('isomorphic-style-loader')]
|
||||
rules: commonLoaders()
|
||||
},
|
||||
externals:
|
||||
// Every non-relative module is external
|
||||
/^[a-z\-0-9]+$/
|
||||
}
|
||||
|
||||
module.exports = [
|
||||
module.exports =
|
||||
// Config for UMD export (browser / node)
|
||||
{
|
||||
...common,
|
||||
|
@ -28,17 +28,3 @@ module.exports = [
|
|||
globalObject: 'this'
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
// Config for esmodule export, not used here, since it conflict with css import.
|
||||
// Maybe we should use styled-component everywhere, to simplify things
|
||||
|
||||
// const futurBuild = {
|
||||
// ...common,
|
||||
// output: {
|
||||
// path: path.resolve(__dirname, 'dist', 'es')
|
||||
// },
|
||||
// experiments: {
|
||||
// outputModule: true
|
||||
// }
|
||||
// }
|
||||
|
|
517
yarn.lock
517
yarn.lock
|
@ -2,7 +2,7 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3":
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3":
|
||||
version "7.8.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
|
||||
integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
|
||||
|
@ -18,7 +18,7 @@
|
|||
invariant "^2.2.4"
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.8.4", "@babel/core@^7.9.0":
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.9.0":
|
||||
version "7.9.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376"
|
||||
integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==
|
||||
|
@ -728,7 +728,7 @@
|
|||
"@babel/helper-create-regexp-features-plugin" "^7.8.3"
|
||||
"@babel/helper-plugin-utils" "^7.8.3"
|
||||
|
||||
"@babel/preset-env@^7.8.4", "@babel/preset-env@^7.9.5":
|
||||
"@babel/preset-env@^7.9.5":
|
||||
version "7.9.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6"
|
||||
integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==
|
||||
|
@ -983,38 +983,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
|
||||
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
|
||||
|
||||
"@hapi/address@2.x.x":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
|
||||
integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
|
||||
|
||||
"@hapi/bourne@1.x.x":
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a"
|
||||
integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
|
||||
|
||||
"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0":
|
||||
version "8.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
|
||||
integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
|
||||
|
||||
"@hapi/joi@^15.1.0":
|
||||
version "15.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7"
|
||||
integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==
|
||||
dependencies:
|
||||
"@hapi/address" "2.x.x"
|
||||
"@hapi/bourne" "1.x.x"
|
||||
"@hapi/hoek" "8.x.x"
|
||||
"@hapi/topo" "3.x.x"
|
||||
|
||||
"@hapi/topo@3.x.x":
|
||||
version "3.1.6"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29"
|
||||
integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
|
||||
dependencies:
|
||||
"@hapi/hoek" "^8.3.0"
|
||||
|
||||
"@icons/material@^0.2.4":
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
|
||||
|
@ -1190,34 +1158,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@rehooks/local-storage/-/local-storage-2.4.0.tgz#fb884b2b657cad5f77aa6ab60bb3532f0e0725d2"
|
||||
integrity sha512-LoXDbEHsuIckVgBsFAv8SuU/M7memjyfWut9Zf36TQXqqCHBRFv8bweg9PymQCa1aWIMjNrZQflFdo55FDlXYg==
|
||||
|
||||
"@rollup/plugin-node-resolve@^7.1.1":
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca"
|
||||
integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^3.0.8"
|
||||
"@types/resolve" "0.0.8"
|
||||
builtin-modules "^3.1.0"
|
||||
is-module "^1.0.0"
|
||||
resolve "^1.14.2"
|
||||
|
||||
"@rollup/plugin-replace@^2.3.1":
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.2.tgz#da4e0939047f793c2eb5eedfd6c271232d0a033f"
|
||||
integrity sha512-KEEL7V2tMNOsbAoNMKg91l1sNXBDoiP31GFlqXVOuV5691VQKzKBh91+OKKOG4uQWYqcFskcjFyh1d5YnZd0Zw==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^3.0.8"
|
||||
magic-string "^0.25.5"
|
||||
|
||||
"@rollup/pluginutils@^3.0.8":
|
||||
version "3.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.10.tgz#a659b9025920378494cd8f8c59fbf9b3a50d5f12"
|
||||
integrity sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw==
|
||||
dependencies:
|
||||
"@types/estree" "0.0.39"
|
||||
estree-walker "^1.0.1"
|
||||
picomatch "^2.2.2"
|
||||
|
||||
"@sentry/browser@5.15.5":
|
||||
version "5.15.5"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.15.5.tgz#d9a51f1388581067b50d30ed9b1aed2cbb333a36"
|
||||
|
@ -1306,14 +1246,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
|
||||
integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
|
||||
|
||||
"@surma/rollup-plugin-off-main-thread@^1.1.1":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.1.tgz#bf1343e5a926e5a1da55e3affd761dda4ce143ef"
|
||||
integrity sha512-ZPBWYQDdO4JZiTmTP3DABsHhIPA7bEJk9Znk7tZsrbPGanoGo8YxMv//WLx5Cvb+lRgS42+6yiOIYYHCKDmkpQ==
|
||||
dependencies:
|
||||
ejs "^2.6.1"
|
||||
magic-string "^0.25.0"
|
||||
|
||||
"@types/anymatch@*":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
|
||||
|
@ -1393,16 +1325,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
|
||||
integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
|
||||
|
||||
"@types/estree@*":
|
||||
version "0.0.44"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21"
|
||||
integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==
|
||||
|
||||
"@types/estree@0.0.39":
|
||||
version "0.0.39"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
|
||||
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
|
||||
|
||||
"@types/history@*":
|
||||
version "4.7.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.5.tgz#527d20ef68571a4af02ed74350164e7a67544860"
|
||||
|
@ -1585,13 +1507,6 @@
|
|||
"@types/react" "*"
|
||||
"@types/recharts-scale" "*"
|
||||
|
||||
"@types/resolve@0.0.8":
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
|
||||
integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/sizzle@2.3.2":
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47"
|
||||
|
@ -1923,11 +1838,6 @@ acorn@^6.0.1, acorn@^6.0.2, acorn@^6.4.1:
|
|||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
|
||||
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
|
||||
|
||||
acorn@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe"
|
||||
integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==
|
||||
|
||||
acorn@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
|
||||
|
@ -2816,11 +2726,6 @@ buffer@^5.5.0:
|
|||
base64-js "^1.0.2"
|
||||
ieee754 "^1.1.4"
|
||||
|
||||
builtin-modules@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
|
||||
integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
|
||||
|
||||
builtin-status-codes@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
|
||||
|
@ -3415,7 +3320,7 @@ commander@~2.9.0:
|
|||
dependencies:
|
||||
graceful-readlink ">= 1.0.0"
|
||||
|
||||
common-tags@1.8.0, common-tags@^1.8.0:
|
||||
common-tags@1.8.0, common-tags@^1.4.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
|
||||
integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
|
||||
|
@ -3677,11 +3582,6 @@ crypto-browserify@^3.11.0:
|
|||
randombytes "^2.0.0"
|
||||
randomfill "^1.0.3"
|
||||
|
||||
crypto-random-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
|
||||
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
|
||||
|
||||
css-color-keywords@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
|
||||
|
@ -4693,16 +4593,6 @@ estraverse@^5.1.0:
|
|||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
|
||||
integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
|
||||
|
||||
estree-walker@^0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
|
||||
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
|
||||
|
||||
estree-walker@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
|
||||
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
|
@ -4966,7 +4856,7 @@ fast-deep-equal@^3.1.1:
|
|||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
|
||||
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
|
||||
|
||||
fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
|
||||
|
@ -5249,6 +5139,15 @@ fs-extra@5.0.0:
|
|||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^4.0.2:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
|
||||
integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b"
|
||||
|
@ -5258,15 +5157,6 @@ fs-extra@^6.0.1:
|
|||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
||||
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-mkdirp-stream@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb"
|
||||
|
@ -5551,7 +5441,7 @@ good-listener@^1.2.2:
|
|||
dependencies:
|
||||
delegate "^3.1.2"
|
||||
|
||||
graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
|
||||
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
|
||||
|
@ -5755,6 +5645,11 @@ hmac-drbg@^1.0.0:
|
|||
minimalistic-assert "^1.0.0"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
|
||||
hoek@4.x.x:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
|
||||
integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==
|
||||
|
||||
hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
|
||||
|
@ -6402,11 +6297,6 @@ is-installed-globally@0.1.0:
|
|||
global-dirs "^0.1.0"
|
||||
is-path-inside "^1.0.0"
|
||||
|
||||
is-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
|
||||
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
|
||||
|
||||
is-negated-glob@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
|
||||
|
@ -6553,6 +6443,13 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||
|
||||
isemail@3.x.x:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c"
|
||||
integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==
|
||||
dependencies:
|
||||
punycode "2.x.x"
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
|
@ -6996,6 +6893,15 @@ jest@^24.9.0:
|
|||
import-local "^2.0.0"
|
||||
jest-cli "^24.9.0"
|
||||
|
||||
joi@^11.1.1:
|
||||
version "11.4.0"
|
||||
resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb"
|
||||
integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
isemail "3.x.x"
|
||||
topo "2.x.x"
|
||||
|
||||
js-base64@^2.1.9:
|
||||
version "2.5.2"
|
||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209"
|
||||
|
@ -7130,6 +7036,13 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
||||
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
|
||||
|
||||
json-stable-stringify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
|
||||
integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
|
||||
dependencies:
|
||||
jsonify "~0.0.0"
|
||||
|
||||
json-stringify-safe@~5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
|
@ -7161,6 +7074,11 @@ jsonfile@^4.0.0:
|
|||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonify@~0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
|
||||
integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
|
||||
|
||||
jsprim@^1.2.2:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
|
||||
|
@ -7449,7 +7367,7 @@ lodash.sortby@^4.7.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
||||
|
||||
lodash.template@^4.3.0, lodash.template@^4.5.0:
|
||||
lodash.template@^4.3.0, lodash.template@^4.4.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
|
||||
integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
|
||||
|
@ -7548,13 +7466,6 @@ lru-cache@^5.1.1:
|
|||
dependencies:
|
||||
yallist "^3.0.2"
|
||||
|
||||
magic-string@^0.25.0, magic-string@^0.25.5:
|
||||
version "0.25.7"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||
integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.4"
|
||||
|
||||
make-dir@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||
|
@ -8683,11 +8594,6 @@ performance-now@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||
|
||||
picomatch@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
|
||||
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
|
||||
|
||||
pify@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
|
@ -9106,10 +9012,10 @@ prettier@^1.19.1:
|
|||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
|
||||
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
|
||||
|
||||
pretty-bytes@^5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
|
||||
integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==
|
||||
pretty-bytes@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
||||
integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
|
||||
|
||||
pretty-error@^2.0.2:
|
||||
version "2.1.1"
|
||||
|
@ -9290,16 +9196,16 @@ punycode@1.3.2:
|
|||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
||||
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
||||
|
||||
punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||
|
||||
punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
||||
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
|
||||
|
||||
punycode@^2.1.0, punycode@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||
|
||||
puppeteer@^1.7.0:
|
||||
version "1.20.0"
|
||||
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.20.0.tgz#e3d267786f74e1d87cf2d15acc59177f471bbe38"
|
||||
|
@ -10181,7 +10087,7 @@ resolve@1.1.7:
|
|||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
|
||||
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
|
||||
|
||||
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.3.2:
|
||||
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.15.1, resolve@^1.3.2:
|
||||
version "1.17.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
|
||||
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
|
||||
|
@ -10238,41 +10144,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
|
|||
hash-base "^3.0.0"
|
||||
inherits "^2.0.1"
|
||||
|
||||
rollup-plugin-babel@^4.3.3:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb"
|
||||
integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.0.0"
|
||||
rollup-pluginutils "^2.8.1"
|
||||
|
||||
rollup-plugin-terser@^5.2.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e"
|
||||
integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.5.5"
|
||||
jest-worker "^24.9.0"
|
||||
rollup-pluginutils "^2.8.2"
|
||||
serialize-javascript "^2.1.2"
|
||||
terser "^4.6.2"
|
||||
|
||||
rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2:
|
||||
version "2.8.2"
|
||||
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
|
||||
integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
|
||||
dependencies:
|
||||
estree-walker "^0.6.1"
|
||||
|
||||
rollup@^1.31.1:
|
||||
version "1.32.1"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4"
|
||||
integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
"@types/node" "*"
|
||||
acorn "^7.1.0"
|
||||
|
||||
rst-selector-parser@^2.2.3:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91"
|
||||
|
@ -10707,11 +10578,6 @@ source-map@^0.7.3:
|
|||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
||||
|
||||
sourcemap-codec@^1.4.4:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
||||
space-separated-tokens@^1.0.0:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
|
||||
|
@ -10980,7 +10846,7 @@ string_decoder@~1.1.1:
|
|||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
stringify-object@^3.3.0:
|
||||
stringify-object@^3.2.2:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
|
||||
integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
|
||||
|
@ -11197,20 +11063,6 @@ tar-stream@^2.0.0:
|
|||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
temp-dir@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
|
||||
integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=
|
||||
|
||||
tempy@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8"
|
||||
integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==
|
||||
dependencies:
|
||||
temp-dir "^1.0.0"
|
||||
type-fest "^0.3.1"
|
||||
unique-string "^1.0.0"
|
||||
|
||||
term-size@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
|
||||
|
@ -11233,7 +11085,7 @@ terser-webpack-plugin@^1.4.3:
|
|||
webpack-sources "^1.4.0"
|
||||
worker-farm "^1.7.0"
|
||||
|
||||
terser@^4.1.2, terser@^4.6.2:
|
||||
terser@^4.1.2:
|
||||
version "4.6.13"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.13.tgz#e879a7364a5e0db52ba4891ecde007422c56a916"
|
||||
integrity sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==
|
||||
|
@ -11406,6 +11258,13 @@ toml@^2.2.2:
|
|||
resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.6.tgz#25b0866483a9722474895559088b436fd11f861b"
|
||||
integrity sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==
|
||||
|
||||
topo@2.x.x:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182"
|
||||
integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=
|
||||
dependencies:
|
||||
hoek "4.x.x"
|
||||
|
||||
toposort@^1.0.0:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
|
||||
|
@ -11505,11 +11364,6 @@ type-fest@^0.11.0:
|
|||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
|
||||
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
|
||||
|
||||
type-fest@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
|
||||
integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
|
||||
|
||||
type-fest@^0.8.1:
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
||||
|
@ -11651,13 +11505,6 @@ unique-stream@^2.0.2:
|
|||
json-stable-stringify-without-jsonify "^1.0.1"
|
||||
through2-filter "^3.0.0"
|
||||
|
||||
unique-string@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
|
||||
integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
|
||||
dependencies:
|
||||
crypto-random-string "^1.0.0"
|
||||
|
||||
unist-util-is@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
|
||||
|
@ -11717,7 +11564,7 @@ untildify@3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9"
|
||||
integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==
|
||||
|
||||
upath@^1.1.1, upath@^1.1.2, upath@^1.2.0:
|
||||
upath@^1.1.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
||||
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
|
||||
|
@ -12072,7 +11919,7 @@ webpack-log@^2.0.0:
|
|||
ansi-colors "^3.0.0"
|
||||
uuid "^3.3.2"
|
||||
|
||||
webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
|
||||
webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
|
||||
integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
|
||||
|
@ -12190,158 +12037,132 @@ wordwrap@~0.0.2:
|
|||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
|
||||
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
|
||||
|
||||
workbox-background-sync@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.3.tgz#121c5cf439b627f6320ff490be65fd2bd440c6ea"
|
||||
integrity sha512-V/R95aPxYjbKCaVzUTihrZ9ObGOnzoA5n60r0DQ747p8Pj15/dDTYixonKhhlvavTiNezUrp+wTQBvZvcd/ETA==
|
||||
workbox-background-sync@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94"
|
||||
integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-broadcast-update@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.3.tgz#312e0f065f06a6fb04a050143c84aa6ba0ed8add"
|
||||
integrity sha512-HJ7FDmgweRcYp8fMiFbkmhaTjMYhMByURe5+TempnCi7cT5NNbyaG4T+rg8NWYxAeumSAB3JQF6XD/z34vRRHA==
|
||||
workbox-broadcast-cache-update@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da"
|
||||
integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-build@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.3.tgz#ec0dbcb7e260ad792c49407d063f4bcc8a8f08b8"
|
||||
integrity sha512-cssa2cKAi/FNp2P2m2DjF/UsXlVX6b1HgkXOjBTraFkIeyZEKxN1F1DnxOpGkdM/bPPRa7y5OmUvjOpgOd9apA==
|
||||
workbox-build@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8"
|
||||
integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g==
|
||||
dependencies:
|
||||
"@babel/core" "^7.8.4"
|
||||
"@babel/preset-env" "^7.8.4"
|
||||
"@babel/runtime" "^7.8.4"
|
||||
"@hapi/joi" "^15.1.0"
|
||||
"@rollup/plugin-node-resolve" "^7.1.1"
|
||||
"@rollup/plugin-replace" "^2.3.1"
|
||||
"@surma/rollup-plugin-off-main-thread" "^1.1.1"
|
||||
common-tags "^1.8.0"
|
||||
fast-json-stable-stringify "^2.1.0"
|
||||
fs-extra "^8.1.0"
|
||||
glob "^7.1.6"
|
||||
lodash.template "^4.5.0"
|
||||
pretty-bytes "^5.3.0"
|
||||
rollup "^1.31.1"
|
||||
rollup-plugin-babel "^4.3.3"
|
||||
rollup-plugin-terser "^5.2.0"
|
||||
source-map "^0.7.3"
|
||||
source-map-url "^0.4.0"
|
||||
stringify-object "^3.3.0"
|
||||
babel-runtime "^6.26.0"
|
||||
common-tags "^1.4.0"
|
||||
fs-extra "^4.0.2"
|
||||
glob "^7.1.2"
|
||||
joi "^11.1.1"
|
||||
lodash.template "^4.4.0"
|
||||
pretty-bytes "^4.0.2"
|
||||
stringify-object "^3.2.2"
|
||||
strip-comments "^1.0.2"
|
||||
tempy "^0.3.0"
|
||||
upath "^1.2.0"
|
||||
workbox-background-sync "^5.1.3"
|
||||
workbox-broadcast-update "^5.1.3"
|
||||
workbox-cacheable-response "^5.1.3"
|
||||
workbox-core "^5.1.3"
|
||||
workbox-expiration "^5.1.3"
|
||||
workbox-google-analytics "^5.1.3"
|
||||
workbox-navigation-preload "^5.1.3"
|
||||
workbox-precaching "^5.1.3"
|
||||
workbox-range-requests "^5.1.3"
|
||||
workbox-routing "^5.1.3"
|
||||
workbox-strategies "^5.1.3"
|
||||
workbox-streams "^5.1.3"
|
||||
workbox-sw "^5.1.3"
|
||||
workbox-window "^5.1.3"
|
||||
workbox-background-sync "^3.6.3"
|
||||
workbox-broadcast-cache-update "^3.6.3"
|
||||
workbox-cache-expiration "^3.6.3"
|
||||
workbox-cacheable-response "^3.6.3"
|
||||
workbox-core "^3.6.3"
|
||||
workbox-google-analytics "^3.6.3"
|
||||
workbox-navigation-preload "^3.6.3"
|
||||
workbox-precaching "^3.6.3"
|
||||
workbox-range-requests "^3.6.3"
|
||||
workbox-routing "^3.6.3"
|
||||
workbox-strategies "^3.6.3"
|
||||
workbox-streams "^3.6.3"
|
||||
workbox-sw "^3.6.3"
|
||||
|
||||
workbox-cacheable-response@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.3.tgz#79ec05c9f22796833d653e7cad43774a8f8bf7db"
|
||||
integrity sha512-lOJEwK2T4KWFNdhRFUKxTPBIO5hIYm9E/nYgMq5h/IH3iHPHlBPuFwRMaQy+TTCGWWTA85NomQOjVw1bj65RLw==
|
||||
workbox-cache-expiration@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372"
|
||||
integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-core@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.3.tgz#0607acd0018c149162777fe4aae08553bd1559f5"
|
||||
integrity sha512-TFSIPxxciX9sFaj0FDiohBeIKpwMcCyNduydi9i3LChItcndDS6TJpErxybv8aBWeCMraXt33TWtF6kKuIObNw==
|
||||
|
||||
workbox-expiration@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.3.tgz#c793eef17513de86c9c1b8254eb2c9ba3ed17568"
|
||||
integrity sha512-8YhpmIHqIx+xmtxONADc+di4a3zzCsvVHLiKq6T3vJZUPnqV2jzx+51+UHMUh3T5w5Z5SFC14l0V/jesRbuMKg==
|
||||
workbox-cacheable-response@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa"
|
||||
integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-google-analytics@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.3.tgz#dba0cadcf438d14389f2f2da0fd9c8cb605d35e6"
|
||||
integrity sha512-ouK6xIJa+raFcO29TgwKFU/Hv1ejqSYzCzH9lI2B/4z/Wdnb8maL6mMIojQ8j5SohwKswMZmLDl0Az2PCmX11w==
|
||||
workbox-core@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c"
|
||||
integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ==
|
||||
|
||||
workbox-google-analytics@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727"
|
||||
integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig==
|
||||
dependencies:
|
||||
workbox-background-sync "^5.1.3"
|
||||
workbox-core "^5.1.3"
|
||||
workbox-routing "^5.1.3"
|
||||
workbox-strategies "^5.1.3"
|
||||
workbox-background-sync "^3.6.3"
|
||||
workbox-core "^3.6.3"
|
||||
workbox-routing "^3.6.3"
|
||||
workbox-strategies "^3.6.3"
|
||||
|
||||
workbox-navigation-preload@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.3.tgz#8e49b935aaef16ac614d06db4a0677cbd59f9cae"
|
||||
integrity sha512-29SPQMAccOgbq3BT9Gz7k+ydy0mcKKR0Rmkmd46tnujutiL4ooE57fBhwsA+c6OlLcYdisvilKlV2YWEtKWfgQ==
|
||||
workbox-navigation-preload@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964"
|
||||
integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-precaching@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.3.tgz#08f0b48f4a390872a994c4a6ce8e43d08c6cba57"
|
||||
integrity sha512-9jjBiB00AOI0NnI320ddnhvlL3bjMrDoI3211kEaxcRWh0N2fX25uVn0O8N8u1gWY4tIfwZAn/DgtAU13cFhYA==
|
||||
workbox-precaching@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1"
|
||||
integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-range-requests@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.3.tgz#f0fc6370ea549d002af1fe902b4ee94bfef6e006"
|
||||
integrity sha512-uUvEoyEUx86LJc7mtmy/6U8xuK0guXU2FnPimt17zDbsC8FSOaPxc92rxtD6xmDSYrI4FqIebypBCjgIe+sfxA==
|
||||
workbox-range-requests@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803"
|
||||
integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-routing@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.3.tgz#9946da0e9ace45af3db09cc0b4bdc4696723e1f7"
|
||||
integrity sha512-F+sAp9Iy3lVl3BEG+pzXWVq4AftzjiFpHDaZ4Kf4vLoBoKQE0hIHet4zE5DpHqYdyw+Udhp4wrfHamX6PN6z1Q==
|
||||
workbox-routing@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7"
|
||||
integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-strategies@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.3.tgz#220cc9f5519ed76f2452ccb9407a5fd967c37110"
|
||||
integrity sha512-wiXHfmOKnWABeIVW+/ye0e00+2CcS5y7SIj2f9zcdy2ZLEbcOf7B+yOl5OrWpBGlTUwRjIYhV++ZqiKm3Dc+8w==
|
||||
workbox-strategies@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0"
|
||||
integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-routing "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-streams@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.3.tgz#8f381d395ea2e57106b7b6542b9ffcd769a3047b"
|
||||
integrity sha512-8kt70eBd1RXL0qenxEnch3Cd7VyW3O0CkeGBN4Bikt307nIV5Q0JciLA5o0CRteijawYOiTq0/px4GDBv1obgQ==
|
||||
workbox-streams@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a"
|
||||
integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
workbox-routing "^5.1.3"
|
||||
workbox-core "^3.6.3"
|
||||
|
||||
workbox-sw@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.3.tgz#7bffbf034f2f5b58e1734b5b86d240019a5332bb"
|
||||
integrity sha512-Syk6RhYr/8VdFwXrxo5IpVz8Og2xapHTWJhqsZRF+TbxSvlaJs8hrvVPd7edn5ZiiVdPhE9NTeOTOg1+D+FGoA==
|
||||
workbox-sw@^3.6.3:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff"
|
||||
integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg==
|
||||
|
||||
workbox-webpack-plugin@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.3.tgz#a7070e3ea0eedb6f87e11fd916ec5d4430a6e348"
|
||||
integrity sha512-gxSkZ9GFLrMNC/8DGNRjcMhrt8iu+MMXhH/Fpo3wo9rKaSMsI7esGq0klTH/UloP9pNvBizVydysrB52eRhI7w==
|
||||
workbox-webpack-plugin@^3.6.0:
|
||||
version "3.6.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz#a807bb891b4e4e3c808df07e58f17de2d5ba6182"
|
||||
integrity sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.5.5"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
source-map-url "^0.4.0"
|
||||
upath "^1.1.2"
|
||||
webpack-sources "^1.3.0"
|
||||
workbox-build "^5.1.3"
|
||||
|
||||
workbox-window@^5.1.3:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.3.tgz#24a2acb2903b0ff2789a4ce32f355621e769eb23"
|
||||
integrity sha512-oYvfVtPLET7FUrhOzbk0R+aATVmpdQBkmDqwyFH4W2dfVqJXTvTXzuGP5Pn9oZ8jMTB3AYW43yhYBlLYM3mYyg==
|
||||
dependencies:
|
||||
workbox-core "^5.1.3"
|
||||
babel-runtime "^6.26.0"
|
||||
json-stable-stringify "^1.0.1"
|
||||
workbox-build "^3.6.3"
|
||||
|
||||
worker-farm@^1.7.0:
|
||||
version "1.7.0"
|
||||
|
|
Loading…
Reference in New Issue