@wavemaker/app-rn-runtime 11.14.1-rc.6311 → 11.14.2-1.6423

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/components/advanced/carousel/carousel.component.js +2 -3
  2. package/components/advanced/carousel/carousel.component.js.map +1 -1
  3. package/components/advanced/carousel/carousel.styles.js +3 -0
  4. package/components/advanced/carousel/carousel.styles.js.map +1 -1
  5. package/components/advanced/customwidgetcontainer/customwidgetcontainer.component.js +14 -0
  6. package/components/advanced/customwidgetcontainer/customwidgetcontainer.component.js.map +1 -0
  7. package/components/advanced/customwidgetcontainer/customwidgetcontainer.props.js +11 -0
  8. package/components/advanced/customwidgetcontainer/customwidgetcontainer.props.js.map +1 -0
  9. package/components/advanced/customwidgetcontainer/customwidgetcontainer.styles.js +14 -0
  10. package/components/advanced/customwidgetcontainer/customwidgetcontainer.styles.js.map +1 -0
  11. package/components/basic/anchor/anchor.styles.js +5 -0
  12. package/components/basic/anchor/anchor.styles.js.map +1 -1
  13. package/components/basic/bottomsheet/bottomsheet.component.js +30 -0
  14. package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
  15. package/components/basic/icon/icon.component.js +5 -3
  16. package/components/basic/icon/icon.component.js.map +1 -1
  17. package/components/basic/icon/icon.styles.js +5 -0
  18. package/components/basic/icon/icon.styles.js.map +1 -1
  19. package/components/basic/message/message.component.js.map +1 -1
  20. package/components/basic/picture/picture.component.js +42 -15
  21. package/components/basic/picture/picture.component.js.map +1 -1
  22. package/components/basic/progress-circle/progress-circle.component.js +3 -3
  23. package/components/basic/progress-circle/progress-circle.component.js.map +1 -1
  24. package/components/basic/search/search.component.js +4 -3
  25. package/components/basic/search/search.component.js.map +1 -1
  26. package/components/container/accordion/accordion.component.js +3 -3
  27. package/components/container/accordion/accordion.component.js.map +1 -1
  28. package/components/container/accordion/accordion.styles.js +4 -1
  29. package/components/container/accordion/accordion.styles.js.map +1 -1
  30. package/components/container/container.component.js +182 -11
  31. package/components/container/container.component.js.map +1 -1
  32. package/components/container/container.props.js +5 -0
  33. package/components/container/container.props.js.map +1 -1
  34. package/components/container/linearlayout/linearlayout.component.js +1 -1
  35. package/components/container/linearlayout/linearlayout.component.js.map +1 -1
  36. package/components/container/tabs/tabheader/tabheader.component.js +23 -17
  37. package/components/container/tabs/tabheader/tabheader.component.js.map +1 -1
  38. package/components/container/tabs/tabs.component.js +5 -4
  39. package/components/container/tabs/tabs.component.js.map +1 -1
  40. package/components/container/tabs/tabs.styles.js +4 -0
  41. package/components/container/tabs/tabs.styles.js.map +1 -1
  42. package/components/container/wizard/wizard.component.js +1 -1
  43. package/components/container/wizard/wizard.component.js.map +1 -1
  44. package/components/container/wizard/wizard.props.js +1 -0
  45. package/components/container/wizard/wizard.props.js.map +1 -1
  46. package/components/container/wizard/wizard.styles.js +1 -3
  47. package/components/container/wizard/wizard.styles.js.map +1 -1
  48. package/components/container/wizard/wizardstep/wizardstep.component.js +2 -2
  49. package/components/container/wizard/wizardstep/wizardstep.component.js.map +1 -1
  50. package/components/data/form/form-body/form-body.component.js +2 -1
  51. package/components/data/form/form-body/form-body.component.js.map +1 -1
  52. package/components/data/form/form-footer/form-footer.component.js +2 -1
  53. package/components/data/form/form-footer/form-footer.component.js.map +1 -1
  54. package/components/data/form/form.styles.js +8 -0
  55. package/components/data/form/form.styles.js.map +1 -1
  56. package/components/input/chips/chips.component.js +66 -20
  57. package/components/input/chips/chips.component.js.map +1 -1
  58. package/components/input/chips/chips.styles.js +43 -0
  59. package/components/input/chips/chips.styles.js.map +1 -1
  60. package/components/input/currency/currency.component.js +2 -1
  61. package/components/input/currency/currency.component.js.map +1 -1
  62. package/components/input/currency/currency.styles.js +6 -1
  63. package/components/input/currency/currency.styles.js.map +1 -1
  64. package/components/input/epoch/base-datetime.component.js.map +1 -1
  65. package/components/input/epoch/datetime/datetime.styles.js.map +1 -1
  66. package/components/input/number/number.component.js +2 -1
  67. package/components/input/number/number.component.js.map +1 -1
  68. package/components/input/radioset/radioset.component.js +6 -3
  69. package/components/input/radioset/radioset.component.js.map +1 -1
  70. package/components/input/radioset/radioset.styles.js.map +1 -1
  71. package/components/input/select/select.component.js +2 -1
  72. package/components/input/select/select.component.js.map +1 -1
  73. package/components/input/slider/slider.component.js +18 -21
  74. package/components/input/slider/slider.component.js.map +1 -1
  75. package/components/input/text/text.component.js +2 -1
  76. package/components/input/text/text.component.js.map +1 -1
  77. package/components/input/text/text.styles.js +12 -0
  78. package/components/input/text/text.styles.js.map +1 -1
  79. package/components/input/textarea/textarea.component.js +2 -1
  80. package/components/input/textarea/textarea.component.js.map +1 -1
  81. package/components/input/toggle/toggle.component.js +26 -1
  82. package/components/input/toggle/toggle.component.js.map +1 -1
  83. package/components/input/toggle/toggle.props.js +2 -0
  84. package/components/input/toggle/toggle.props.js.map +1 -1
  85. package/components/input/toggle/toggle.styles.js +27 -1
  86. package/components/input/toggle/toggle.styles.js.map +1 -1
  87. package/components/navigation/popover/popover.component.js +4 -4
  88. package/components/navigation/popover/popover.component.js.map +1 -1
  89. package/components/navigation/popover/popover.props.js +1 -0
  90. package/components/navigation/popover/popover.props.js.map +1 -1
  91. package/components/navigation/popover/popover.styles.js +13 -0
  92. package/components/navigation/popover/popover.styles.js.map +1 -1
  93. package/core/base.component.js +76 -10
  94. package/core/base.component.js.map +1 -1
  95. package/core/components/textinput.component.js +5 -1
  96. package/core/components/textinput.component.js.map +1 -1
  97. package/core/tappable.component.js +1 -1
  98. package/core/tappable.component.js.map +1 -1
  99. package/npm-shrinkwrap.json +1664 -1831
  100. package/package-lock.json +1664 -1831
  101. package/package.json +3 -2
  102. package/runtime/base-customwidget.component.js +52 -0
  103. package/runtime/base-customwidget.component.js.map +1 -0
  104. package/styles/background.component.js +2 -2
  105. package/styles/background.component.js.map +1 -1
  106. package/styles/calc.js +165 -0
  107. package/styles/calc.js.map +1 -0
  108. package/styles/color-mix.js +82 -0
  109. package/styles/color-mix.js.map +1 -0
  110. package/styles/theme.js +104 -23
  111. package/styles/theme.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-rn-runtime",
3
- "version": "11.14.1-rc.6311",
3
+ "version": "11.14.2-1.6423",
4
4
  "description": "''",
5
5
  "main": "index",
6
6
  "module": "index",
@@ -59,9 +59,10 @@
59
59
  "@react-navigation/drawer": "7.5.8",
60
60
  "@react-navigation/native": "7.1.18",
61
61
  "@react-navigation/stack": "7.4.8",
62
- "@wavemaker/variables": "11.14.1-rc.6311",
62
+ "@wavemaker/variables": "11.14.2-1.6423",
63
63
  "axios": "1.8.3",
64
64
  "color": "4.2.3",
65
+ "colorjs.io": "^0.5.2",
65
66
  "cross-env": "7.0.3",
66
67
  "css-mediaquery": "0.1.2",
67
68
  "d3-shape": "3.2.0",
@@ -0,0 +1,52 @@
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import React from 'react';
5
+ import { PartialProvider } from '@wavemaker/app-rn-runtime/core/partial.service';
6
+ import WmPrefabContainer from '@wavemaker/app-rn-runtime/components/prefab/prefab-container.component';
7
+ import BaseFragment from './base-fragment.component';
8
+ export default class BaseCustomWidget extends BaseFragment {
9
+ constructor(props, defualtProps, partialService) {
10
+ super(props, defualtProps);
11
+ this.partialService = partialService;
12
+ _defineProperty(this, "appUrl", '');
13
+ _defineProperty(this, "widgetParams", {});
14
+ _defineProperty(this, "_renderCustomWidget", null);
15
+ this.App = this.appConfig.app;
16
+ this.Actions = {};
17
+ this.Variables = {};
18
+ this.appUrl = this.appConfig.url;
19
+ this.resourceBaseUrl = `${this.baseUrl}/app/custom-widgets/${props.widgetname}`;
20
+ this.baseUrl = `${this.baseUrl}/custom-widgets/${props.widgetname}`;
21
+ this.watcher = props.parentWatcher.create();
22
+ }
23
+ onComponentInit(w) {
24
+ super.onComponentInit(w);
25
+ if (w instanceof WmPrefabContainer) {
26
+ this.targetWidget = w;
27
+ }
28
+ }
29
+ onFragmentReady() {
30
+ this._renderCustomWidget = () => {
31
+ const component = this.renderCustomWidget();
32
+ super.onFragmentReady().then(() => {
33
+ this.onContentReady();
34
+ this.invokeEventCallback('onLoad', [null, this]);
35
+ });
36
+ this._renderCustomWidget = () => this.renderCustomWidget();
37
+ return component;
38
+ };
39
+ this.refresh();
40
+ return Promise.resolve();
41
+ }
42
+ componentWillUnmount() {
43
+ super.componentWillUnmount();
44
+ this.invokeEventCallback('onDestroy', [null, this]);
45
+ }
46
+ renderWidget(props) {
47
+ return /*#__PURE__*/React.createElement(PartialProvider, {
48
+ value: this.partialService
49
+ }, this._renderCustomWidget ? this._renderCustomWidget() : null);
50
+ }
51
+ }
52
+ //# sourceMappingURL=base-customwidget.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","PartialProvider","WmPrefabContainer","BaseFragment","BaseCustomWidget","constructor","props","defualtProps","partialService","_defineProperty","App","appConfig","app","Actions","Variables","appUrl","url","resourceBaseUrl","baseUrl","widgetname","watcher","parentWatcher","create","onComponentInit","w","targetWidget","onFragmentReady","_renderCustomWidget","component","renderCustomWidget","then","onContentReady","invokeEventCallback","refresh","Promise","resolve","componentWillUnmount","renderWidget","createElement","value"],"sources":["base-customwidget.component.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { BaseComponent } from '@wavemaker/app-rn-runtime/core/base.component';\nimport PartialService, { PartialProvider } from '@wavemaker/app-rn-runtime/core/partial.service';\nimport WmPrefabContainer from '@wavemaker/app-rn-runtime/components/prefab/prefab-container.component';\nimport BaseFragment, { FragmentProps, FragmentState } from './base-fragment.component';\nimport { Watcher } from './watcher';\n\n\nexport interface CustomWidgetProps extends FragmentProps {\n widgetname: string;\n parentWatcher: Watcher;\n}\n\nexport interface CustomWidgetState extends FragmentState<CustomWidgetProps> {}\n\nexport default abstract class BaseCustomWidget extends BaseFragment<CustomWidgetProps, CustomWidgetState> {\n\n private appUrl = '';\n private widgetParams: any = {};\n private _renderCustomWidget:() => React.ReactNode = null as any;\n\n constructor(props: CustomWidgetProps, defualtProps: CustomWidgetProps, private partialService: PartialService) {\n super(props, defualtProps);\n this.App = this.appConfig.app;\n this.Actions = {};\n this.Variables = {};\n this.appUrl = this.appConfig.url;\n this.resourceBaseUrl = `${this.baseUrl}/app/custom-widgets/${props.widgetname}`;\n this.baseUrl = `${this.baseUrl}/custom-widgets/${props.widgetname}`;\n this.watcher = props.parentWatcher.create();\n }\n onComponentInit(w: BaseComponent<any, any, any>) {\n super.onComponentInit(w);\n if (w instanceof WmPrefabContainer) {\n this.targetWidget = w;\n }\n }\n\n onFragmentReady(): Promise<void> {\n this._renderCustomWidget = () => {\n const component = this.renderCustomWidget();\n super.onFragmentReady()\n .then(() => {\n this.onContentReady();\n this.invokeEventCallback('onLoad', [null, this]);\n });\n this._renderCustomWidget = () => this.renderCustomWidget();\n return component;\n };\n this.refresh();\n return Promise.resolve();\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n this.invokeEventCallback('onDestroy', [null, this]);\n }\n\n abstract renderCustomWidget(): React.ReactNode;\n \n renderWidget(props: CustomWidgetProps) {\n return (\n <PartialProvider value={this.partialService}>\n {this._renderCustomWidget ? this._renderCustomWidget(): null}\n </PartialProvider>\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAIzB,SAAyBC,eAAe,QAAQ,gDAAgD;AAChG,OAAOC,iBAAiB,MAAM,wEAAwE;AACtG,OAAOC,YAAY,MAAwC,2BAA2B;AAWtF,eAAe,MAAeC,gBAAgB,SAASD,YAAY,CAAuC;EAMtGE,WAAWA,CAACC,KAAwB,EAAEC,YAA+B,EAAUC,cAA8B,EAAE;IAC7G,KAAK,CAACF,KAAK,EAAEC,YAAY,CAAC;IAAC,KADkDC,cAA8B,GAA9BA,cAA8B;IAAAC,eAAA,iBAJ5F,EAAE;IAAAA,eAAA,uBACS,CAAC,CAAC;IAAAA,eAAA,8BACsB,IAAI;IAItD,IAAI,CAACC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACC,GAAG;IAC7B,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC;IACnB,IAAI,CAACC,MAAM,GAAG,IAAI,CAACJ,SAAS,CAACK,GAAG;IAChC,IAAI,CAACC,eAAe,GAAG,GAAG,IAAI,CAACC,OAAO,uBAAuBZ,KAAK,CAACa,UAAU,EAAE;IAC/E,IAAI,CAACD,OAAO,GAAG,GAAG,IAAI,CAACA,OAAO,mBAAmBZ,KAAK,CAACa,UAAU,EAAE;IACnE,IAAI,CAACC,OAAO,GAAGd,KAAK,CAACe,aAAa,CAACC,MAAM,CAAC,CAAC;EAC7C;EACAC,eAAeA,CAACC,CAA+B,EAAE;IAC/C,KAAK,CAACD,eAAe,CAACC,CAAC,CAAC;IACxB,IAAIA,CAAC,YAAYtB,iBAAiB,EAAE;MAClC,IAAI,CAACuB,YAAY,GAAGD,CAAC;IACvB;EACF;EAEAE,eAAeA,CAAA,EAAkB;IAC/B,IAAI,CAACC,mBAAmB,GAAG,MAAM;MAC/B,MAAMC,SAAS,GAAG,IAAI,CAACC,kBAAkB,CAAC,CAAC;MAC3C,KAAK,CAACH,eAAe,CAAC,CAAC,CACtBI,IAAI,CAAC,MAAM;QACV,IAAI,CAACC,cAAc,CAAC,CAAC;QACrB,IAAI,CAACC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;MAClD,CAAC,CAAC;MACF,IAAI,CAACL,mBAAmB,GAAG,MAAM,IAAI,CAACE,kBAAkB,CAAC,CAAC;MAC1D,OAAOD,SAAS;IAClB,CAAC;IACD,IAAI,CAACK,OAAO,CAAC,CAAC;IACd,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,KAAK,CAACA,oBAAoB,CAAC,CAAC;IAC5B,IAAI,CAACJ,mBAAmB,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACrD;EAIAK,YAAYA,CAAC/B,KAAwB,EAAE;IACrC,oBACEN,KAAA,CAAAsC,aAAA,CAACrC,eAAe;MAACsC,KAAK,EAAE,IAAI,CAAC/B;IAAe,GACvC,IAAI,CAACmB,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAC,CAAC,GAAE,IAC3C,CAAC;EAEtB;AACJ","ignoreList":[]}
@@ -69,7 +69,7 @@ export class LinearGradient extends React.Component {
69
69
  state.locations.push(parseFloat(p[1]) / 100);
70
70
  state.colors.push(s.replace(p[0], ''));
71
71
  } else {
72
- state.locations.push(null);
72
+ // state.locations.push(null as any);
73
73
  state.colors.push(s);
74
74
  }
75
75
  });
@@ -124,7 +124,7 @@ export class BackgroundComponent extends React.Component {
124
124
  naturalImageWidth: width,
125
125
  naturalImageHeight: height
126
126
  });
127
- } else if (!isNil(imageSrc)) {
127
+ } else if (!isNil(imageSrc === null || imageSrc === void 0 ? void 0 : imageSrc.uri)) {
128
128
  imageSizeEstimator.getSize(imageSrc.uri, (width, height) => {
129
129
  this.setState({
130
130
  naturalImageWidth: width,
@@ -1 +1 @@
1
- {"version":3,"names":["React","LinearGradient","ExpoLinearGradient","Image","StyleSheet","View","isEmpty","isNil","isNumber","imageSizeEstimator","AssetConsumer","isFullPathUrl","IMAGE_URL_REGEX","LINEAT_GRADIENT_REGEX","DIMENSION_REGEX","BACKGROUND_POSITION_REGEX","BACKGROUND_SIZE_REGEX","ASSET_CACHE","Component","constructor","props","state","parse","val","value","splits","split","map","v","trim","angle","locations","endsWith","parseInt","shift","delta","Math","round","tan","PI","abs","end","x","y","start","colors","s","_s$matchAll$next","p","matchAll","next","push","parseFloat","replace","componentDidUpdate","prevProps","prevState","snapshot","setState","render","_this$props$size","_this$props$style","createElement","style","borderWidth","overflow","absoluteFill","middle","flexDirection","justifyContent","alignItems","testID","size","width","position","borderRadius","children","BackgroundComponent","_defineProperty","imageSrc","image","undefined","caluculateSize","height","resolveAssetSource","naturalImageWidth","naturalImageHeight","getSize","uri","getDimension","dim","getPosition","result","top","bottom","left","right","getPositionAndSize","_this$props$size2","_this$getGradient","resizeMode","getGradient","length","repeat","renderLinearGradient","data","psresult","Fragment","setImage","componentDidMount","setTimeout","_this$props$image","_source","source","startsWith","_this$props$image2","loadAsset","_this$props$image3","renderImage","_psresult$position","_psresult$position2","loadImage","minWidth","minHeight","_gradientData$value","gradientData"],"sources":["background.component.tsx"],"sourcesContent":["import * as React from 'react';\nimport { LinearGradient as ExpoLinearGradient, LinearGradientPoint } from 'expo-linear-gradient';\nimport { DimensionValue, Image, StyleSheet, View, ViewStyle } from 'react-native';\nimport { isEmpty, isNil, isNumber, isString } from 'lodash-es';\nimport imageSizeEstimator from '@wavemaker/app-rn-runtime/core/imageSizeEstimator';\nimport { AssetConsumer } from '@wavemaker/app-rn-runtime/core/asset.provider';\nimport { isFullPathUrl } from '@wavemaker/app-rn-runtime/core/utils';\n\nexport interface LinearGradientProps {\n value: string;\n children: any;\n style?: ViewStyle;\n size?: ViewStyle;\n position?: ViewStyle;\n middle?: boolean;\n}\n\nexport interface LinearGradientState {\n colors: string[];\n locations: number[];\n start: LinearGradientPoint;\n end: LinearGradientPoint;\n}\n\nconst IMAGE_URL_REGEX = /url\\(['|\"]?(.+)['|\"]?\\)$/gi;\nconst LINEAT_GRADIENT_REGEX = /linear-gradient\\((.+)\\)$/gi;\nconst DIMENSION_REGEX = /([0-9%]+)[a-z]*/g;\nconst BACKGROUND_POSITION_REGEX = /([0-9%]+)[a-z]*\\s*([0-9%]+)[a-z]*/g;\nconst BACKGROUND_SIZE_REGEX = /([0-9%]+)[a-z]*\\s*([0-9%]+)[a-z]*/g;\n\nconst ASSET_CACHE = {} as any;\n\nexport class LinearGradient extends React.Component<LinearGradientProps, LinearGradientState> {\n\n constructor(props: LinearGradientProps) {\n super(props);\n this.state = this.parse();\n }\n\n parse(val = this.props.value) {\n let state = {} as LinearGradientState;\n const splits = val.split(',').map(v => v.trim());\n let angle = 0;\n const locations: LinearGradientPoint[] = [];\n if (splits[0].endsWith('deg')) {\n angle = (parseInt(splits[0].split('deg')[0]))%360;\n angle = angle < 0 ? (360 + angle) : angle;\n splits.shift();\n }\n angle += 90;\n const delta = Math.round(Math.tan((angle * Math.PI) / 180) * 100)/100;\n if (Math.abs(delta) > 1) {\n state = {\n end: {\n x: -0.5 / delta + 0.5,\n y: 0\n },\n start: {\n x: 0.5 / delta + 0.5,\n y: 1\n }\n } as LinearGradientState;\n } else {\n state = {\n start: {\n x: 0,\n y: -0.5 * delta + 0.5\n },\n end: {\n x: 1,\n y: 0.5 * delta + 0.5\n }\n } as LinearGradientState;\n }\n if (angle >= 270 && angle <= 450) {\n state = {\n start : state.end,\n end: state.start\n } as LinearGradientState;\n }\n state.colors = [];\n state.locations = [];\n splits.map(s => {\n const p = s.matchAll(/\\s*([0-9.]+)%/g).next()?.value;\n if (p) {\n state.locations.push(parseFloat(p[1]) / 100);\n state.colors.push(s.replace(p[0], ''));\n } else {\n state.locations.push(null as any);\n state.colors.push(s);\n }\n });\n return state;\n }\n\n componentDidUpdate(prevProps: Readonly<LinearGradientProps>, prevState: Readonly<{}>, snapshot?: any): void {\n if (prevProps.value !== this.props.value) {\n this.setState(this.parse());\n }\n }\n \n\n public render() {\n return (\n <View style={[{borderWidth: 0, overflow: 'hidden'}, StyleSheet.absoluteFill, this.props.style]}>\n <View style={[\n StyleSheet.absoluteFill, this.props.middle ? {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center'\n } : null]}>\n <ExpoLinearGradient testID=\"wm-expo-linear-gradient\"\n colors={this.state.colors as any}\n locations={this.state.locations as any}\n start={this.state.start}\n end={this.state.end}\n style={[\n this.props.size?.width ? this.props.size : StyleSheet.absoluteFill,\n this.props.position,\n {position: 'absolute', borderRadius: this.props.style?.borderRadius}\n ]}\n />\n </View>\n {this.props.children}\n </View>\n );\n }\n}\n\nexport interface BackgroundProps {\n image?: string;\n position?: string;\n children?: any;\n resizeMode?: string;\n repeat?: string;\n style?: ViewStyle;\n size: string;\n}\n\nexport interface BackgroundState {\n imageSrc: any;\n naturalImageWidth: number,\n naturalImageHeight: number\n}\n\nexport class BackgroundComponent extends React.Component<BackgroundProps, BackgroundState> {\n\n private loadAsset: (path: string) => number | string = null as any;\n\n constructor(props: BackgroundProps) {\n super(props);\n this.state = {\n imageSrc : this.props.image ? ASSET_CACHE[this.props.image] : undefined\n } as BackgroundState;\n }\n\n public caluculateSize(imageSrc: any) {\n if (isNumber(imageSrc)) {\n const {width, height} = Image.resolveAssetSource(imageSrc);\n this.setState({\n naturalImageWidth: width,\n naturalImageHeight: height\n } as BackgroundState);\n } else if (!isNil(imageSrc)) {\n imageSizeEstimator.getSize(imageSrc.uri, (width: number, height: number) => {\n this.setState({\n naturalImageWidth: width,\n naturalImageHeight: height\n } as BackgroundState);\n });\n }\n }\n\n getDimension(dim: string) {\n if (dim) {\n const value = dim.matchAll(DIMENSION_REGEX).next().value!;\n if (value[1]) {\n return value[1].endsWith('%') ? value[1] : parseInt(value[1]);\n }\n }\n return null;\n }\n\n public getPosition() {\n const result = {} as ViewStyle;\n if (!this.props.position) {\n return result;\n }\n const position = this.props.position.split(' ').map(s => s.trim());\n if (position[0] === 'center') {\n result.alignItems = 'center';\n } else if (position[0] === 'top') {\n result.top = 0;\n } else if (position[0] === 'bottom') {\n result.bottom = 0;\n } else {\n result.top = this.getDimension(position[0]) as DimensionValue;\n }\n if (position[1] === 'center') {\n result.justifyContent = 'center';\n } else if (position[1] === 'left') {\n result.left = 0;\n } else if (position[1] === 'bottom') {\n result.right = 0;\n } else {\n result.left = this.getDimension(position[1]) as DimensionValue;\n }\n return result;\n }\n\n public getPositionAndSize() {\n const result: {\n resizeMode? : string,\n position?: ViewStyle,\n size?: ViewStyle\n } = {} as any;\n if (this.props.resizeMode) {\n result.resizeMode = this.props.resizeMode;\n return result;\n } else if (this.props.position === 'center') {\n result.resizeMode = 'center';\n result.position = {\n justifyContent: 'center',\n alignItems: 'center'\n };\n } else if (this.props.size === 'contain' || this.props.size === 'cover') {\n result.resizeMode = this.props.size;\n return result;\n }\n const size = this.props.size?.matchAll(BACKGROUND_SIZE_REGEX).next().value;\n result.size = {};\n if (size) {\n result.size.width = (size[1].endsWith('%') ? size[1] : parseInt(size[1])) as DimensionValue;\n result.size.height = (size[2].endsWith('%') ? size[2] : parseInt(size[2])) as DimensionValue\n }\n if (!result.resizeMode && this.props.position) {\n result.position = this.getPosition();\n }\n if (!this.getGradient()?.value?.length) {\n if (this.props.repeat === 'no-repeat') {\n result.size.width = result.size.width || this.state.naturalImageWidth; \n result.size.height = result.size.height || this.state.naturalImageHeight; \n } else if (this.props.repeat === 'repeat-x') {\n result.resizeMode = 'repeat';\n result.size.width = result.size.width || '100%'; \n result.size.height = result.size.height || this.state.naturalImageHeight; \n } else if (this.props.repeat === 'repeat-y') {\n result.resizeMode = 'repeat';\n result.size.width = result.size.width || this.state.naturalImageWidth; \n result.size.height = result.size.height || '100%'; \n } else {\n result.resizeMode = 'repeat';\n }\n }\n return result;\n }\n\n public renderLinearGradient(data: string) {\n const psresult = this.getPositionAndSize();\n return (\n <LinearGradient\n value={data || ''}\n style={this.props.style}\n size={psresult.size}\n position={psresult.position}\n middle={psresult.resizeMode === 'center'}> \n <></> \n </LinearGradient>\n );\n }\n\n componentDidUpdate(prevProps: Readonly<BackgroundProps>, prevState: Readonly<{}>, snapshot?: any): void {\n if (this.props.image && prevProps.image !== this.props.image) {\n this.setImage();\n }\n }\n\n componentDidMount(): void {\n setTimeout(() => this.setImage(), 100);\n }\n\n setImage() {\n let source = this.props.image?.trim() as any;\n if (!source) {\n return;\n }\n if (source?.startsWith('url')) {\n source = this.props.image?.matchAll(IMAGE_URL_REGEX)?.next()?.value?.[1];\n }\n if (this.loadAsset) {\n source = this.loadAsset(source);\n }\n if (isFullPathUrl(source)) {\n source = {\n uri: source\n };\n }\n this.caluculateSize(source);\n this.setState({\n imageSrc: source\n } as BackgroundState);\n if (this.props.image) {\n ASSET_CACHE[this.props.image] = source;\n }\n }\n\n public getGradient() {\n return this.props.image?.trim().matchAll(LINEAT_GRADIENT_REGEX).next();\n }\n\n public renderImage() {\n const psresult = this.getPositionAndSize();\n return (\n <AssetConsumer>\n {(loadAsset) => {\n const loadImage = this.loadAsset !== loadAsset;\n this.loadAsset = loadAsset;\n if (loadImage) {\n setTimeout(() => this.setImage(), 10);\n }\n return (<View style={[{borderWidth: 0, overflow: 'hidden'}, StyleSheet.absoluteFill, this.props.style]}>\n <View style={[\n StyleSheet.absoluteFill, {\n flexDirection: 'row',\n justifyContent: psresult.position?.justifyContent,\n alignItems: psresult.position?.alignItems\n }]}>\n <View style={[\n { position: 'absolute', overflow: 'hidden' },\n psresult.position,\n isEmpty(psresult.size) ? StyleSheet.absoluteFill : psresult.size\n ]}>\n <Image\n source={this.state.imageSrc}\n resizeMode={psresult.resizeMode as any || 'cover'}\n style={[\n { \n width: '100%',\n height: '100%'\n }, \n !isEmpty(psresult.size)\n || (psresult.resizeMode === 'cover'\n || psresult.resizeMode === 'contain') ? null : {\n minWidth: this.state.naturalImageWidth,\n minHeight: this.state.naturalImageHeight\n }\n ]}/> \n </View>\n </View>\n </View>);\n }}\n </AssetConsumer>\n );\n }\n\n public render() {\n const gradientData = this.getGradient();\n if (gradientData?.value?.length) {\n return this.renderLinearGradient(gradientData.value[1]);\n } else if (this.props.image && this.state.imageSrc) {\n return this.renderImage();\n }\n return null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","LinearGradient","ExpoLinearGradient","Image","StyleSheet","View","isEmpty","isNil","isNumber","imageSizeEstimator","AssetConsumer","isFullPathUrl","IMAGE_URL_REGEX","LINEAT_GRADIENT_REGEX","DIMENSION_REGEX","BACKGROUND_POSITION_REGEX","BACKGROUND_SIZE_REGEX","ASSET_CACHE","Component","constructor","props","state","parse","val","value","splits","split","map","v","trim","angle","locations","endsWith","parseInt","shift","delta","Math","round","tan","PI","abs","end","x","y","start","colors","s","_s$matchAll$next","p","matchAll","next","push","parseFloat","replace","componentDidUpdate","prevProps","prevState","snapshot","setState","render","_this$props$size","_this$props$style","createElement","style","borderWidth","overflow","absoluteFill","middle","flexDirection","justifyContent","alignItems","testID","size","width","position","borderRadius","children","BackgroundComponent","_defineProperty","imageSrc","image","undefined","caluculateSize","height","resolveAssetSource","naturalImageWidth","naturalImageHeight","uri","getSize","getDimension","dim","getPosition","result","top","bottom","left","right","getPositionAndSize","_this$props$size2","_this$getGradient","resizeMode","getGradient","length","repeat","renderLinearGradient","data","psresult","Fragment","setImage","componentDidMount","setTimeout","_this$props$image","_source","source","startsWith","_this$props$image2","loadAsset","_this$props$image3","renderImage","_psresult$position","_psresult$position2","loadImage","minWidth","minHeight","_gradientData$value","gradientData"],"sources":["background.component.tsx"],"sourcesContent":["import * as React from 'react';\nimport { LinearGradient as ExpoLinearGradient, LinearGradientPoint } from 'expo-linear-gradient';\nimport { DimensionValue, Image, StyleSheet, View, ViewStyle } from 'react-native';\nimport { isEmpty, isNil, isNumber, isString } from 'lodash-es';\nimport imageSizeEstimator from '@wavemaker/app-rn-runtime/core/imageSizeEstimator';\nimport { AssetConsumer } from '@wavemaker/app-rn-runtime/core/asset.provider';\nimport { isFullPathUrl } from '@wavemaker/app-rn-runtime/core/utils';\n\nexport interface LinearGradientProps {\n value: string;\n children: any;\n style?: ViewStyle;\n size?: ViewStyle;\n position?: ViewStyle;\n middle?: boolean;\n}\n\nexport interface LinearGradientState {\n colors: string[];\n locations: number[];\n start: LinearGradientPoint;\n end: LinearGradientPoint;\n}\n\nconst IMAGE_URL_REGEX = /url\\(['|\"]?(.+)['|\"]?\\)$/gi;\nconst LINEAT_GRADIENT_REGEX = /linear-gradient\\((.+)\\)$/gi;\nconst DIMENSION_REGEX = /([0-9%]+)[a-z]*/g;\nconst BACKGROUND_POSITION_REGEX = /([0-9%]+)[a-z]*\\s*([0-9%]+)[a-z]*/g;\nconst BACKGROUND_SIZE_REGEX = /([0-9%]+)[a-z]*\\s*([0-9%]+)[a-z]*/g;\n\nconst ASSET_CACHE = {} as any;\n\nexport class LinearGradient extends React.Component<LinearGradientProps, LinearGradientState> {\n\n constructor(props: LinearGradientProps) {\n super(props);\n this.state = this.parse();\n }\n\n parse(val = this.props.value) {\n let state = {} as LinearGradientState;\n const splits = val.split(',').map(v => v.trim());\n let angle = 0;\n const locations: LinearGradientPoint[] = [];\n if (splits[0].endsWith('deg')) {\n angle = (parseInt(splits[0].split('deg')[0]))%360;\n angle = angle < 0 ? (360 + angle) : angle;\n splits.shift();\n }\n angle += 90;\n const delta = Math.round(Math.tan((angle * Math.PI) / 180) * 100)/100;\n if (Math.abs(delta) > 1) {\n state = {\n end: {\n x: -0.5 / delta + 0.5,\n y: 0\n },\n start: {\n x: 0.5 / delta + 0.5,\n y: 1\n }\n } as LinearGradientState;\n } else {\n state = {\n start: {\n x: 0,\n y: -0.5 * delta + 0.5\n },\n end: {\n x: 1,\n y: 0.5 * delta + 0.5\n }\n } as LinearGradientState;\n }\n if (angle >= 270 && angle <= 450) {\n state = {\n start : state.end,\n end: state.start\n } as LinearGradientState;\n }\n state.colors = [];\n state.locations = [];\n splits.map(s => {\n const p = s.matchAll(/\\s*([0-9.]+)%/g).next()?.value;\n if (p) {\n state.locations.push(parseFloat(p[1]) / 100);\n state.colors.push(s.replace(p[0], ''));\n } else {\n // state.locations.push(null as any);\n state.colors.push(s);\n }\n });\n return state;\n }\n\n componentDidUpdate(prevProps: Readonly<LinearGradientProps>, prevState: Readonly<{}>, snapshot?: any): void {\n if (prevProps.value !== this.props.value) {\n this.setState(this.parse());\n }\n }\n \n\n public render() {\n return (\n <View style={[{borderWidth: 0, overflow: 'hidden'}, StyleSheet.absoluteFill, this.props.style]}>\n <View style={[\n StyleSheet.absoluteFill, this.props.middle ? {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center'\n } : null]}>\n <ExpoLinearGradient testID=\"wm-expo-linear-gradient\"\n colors={this.state.colors as any}\n locations={this.state.locations as any}\n start={this.state.start}\n end={this.state.end}\n style={[\n this.props.size?.width ? this.props.size : StyleSheet.absoluteFill,\n this.props.position,\n {position: 'absolute', borderRadius: this.props.style?.borderRadius}\n ]}\n />\n </View>\n {this.props.children}\n </View>\n );\n }\n}\n\nexport interface BackgroundProps {\n image?: string;\n position?: string;\n children?: any;\n resizeMode?: string;\n repeat?: string;\n style?: ViewStyle;\n size: string;\n}\n\nexport interface BackgroundState {\n imageSrc: any;\n naturalImageWidth: number,\n naturalImageHeight: number\n}\n\nexport class BackgroundComponent extends React.Component<BackgroundProps, BackgroundState> {\n\n private loadAsset: (path: string) => number | string = null as any;\n\n constructor(props: BackgroundProps) {\n super(props);\n this.state = {\n imageSrc : this.props.image ? ASSET_CACHE[this.props.image] : undefined\n } as BackgroundState;\n }\n\n public caluculateSize(imageSrc: any) {\n if (isNumber(imageSrc)) {\n const {width, height} = Image.resolveAssetSource(imageSrc);\n this.setState({\n naturalImageWidth: width,\n naturalImageHeight: height\n } as BackgroundState);\n } else if (!isNil(imageSrc?.uri)) {\n imageSizeEstimator.getSize(imageSrc.uri, (width: number, height: number) => {\n this.setState({\n naturalImageWidth: width,\n naturalImageHeight: height\n } as BackgroundState);\n });\n }\n }\n\n getDimension(dim: string) {\n if (dim) {\n const value = dim.matchAll(DIMENSION_REGEX).next().value!;\n if (value[1]) {\n return value[1].endsWith('%') ? value[1] : parseInt(value[1]);\n }\n }\n return null;\n }\n\n public getPosition() {\n const result = {} as ViewStyle;\n if (!this.props.position) {\n return result;\n }\n const position = this.props.position.split(' ').map(s => s.trim());\n if (position[0] === 'center') {\n result.alignItems = 'center';\n } else if (position[0] === 'top') {\n result.top = 0;\n } else if (position[0] === 'bottom') {\n result.bottom = 0;\n } else {\n result.top = this.getDimension(position[0]) as DimensionValue;\n }\n if (position[1] === 'center') {\n result.justifyContent = 'center';\n } else if (position[1] === 'left') {\n result.left = 0;\n } else if (position[1] === 'bottom') {\n result.right = 0;\n } else {\n result.left = this.getDimension(position[1]) as DimensionValue;\n }\n return result;\n }\n\n public getPositionAndSize() {\n const result: {\n resizeMode? : string,\n position?: ViewStyle,\n size?: ViewStyle\n } = {} as any;\n if (this.props.resizeMode) {\n result.resizeMode = this.props.resizeMode;\n return result;\n } else if (this.props.position === 'center') {\n result.resizeMode = 'center';\n result.position = {\n justifyContent: 'center',\n alignItems: 'center'\n };\n } else if (this.props.size === 'contain' || this.props.size === 'cover') {\n result.resizeMode = this.props.size;\n return result;\n }\n const size = this.props.size?.matchAll(BACKGROUND_SIZE_REGEX).next().value;\n result.size = {};\n if (size) {\n result.size.width = (size[1].endsWith('%') ? size[1] : parseInt(size[1])) as DimensionValue;\n result.size.height = (size[2].endsWith('%') ? size[2] : parseInt(size[2])) as DimensionValue\n }\n if (!result.resizeMode && this.props.position) {\n result.position = this.getPosition();\n }\n if (!this.getGradient()?.value?.length) {\n if (this.props.repeat === 'no-repeat') {\n result.size.width = result.size.width || this.state.naturalImageWidth; \n result.size.height = result.size.height || this.state.naturalImageHeight; \n } else if (this.props.repeat === 'repeat-x') {\n result.resizeMode = 'repeat';\n result.size.width = result.size.width || '100%'; \n result.size.height = result.size.height || this.state.naturalImageHeight; \n } else if (this.props.repeat === 'repeat-y') {\n result.resizeMode = 'repeat';\n result.size.width = result.size.width || this.state.naturalImageWidth; \n result.size.height = result.size.height || '100%'; \n } else {\n result.resizeMode = 'repeat';\n }\n }\n return result;\n }\n\n public renderLinearGradient(data: string) {\n const psresult = this.getPositionAndSize();\n return (\n <LinearGradient\n value={data || ''}\n style={this.props.style}\n size={psresult.size}\n position={psresult.position}\n middle={psresult.resizeMode === 'center'}> \n <></> \n </LinearGradient>\n );\n }\n\n componentDidUpdate(prevProps: Readonly<BackgroundProps>, prevState: Readonly<{}>, snapshot?: any): void {\n if (this.props.image && prevProps.image !== this.props.image) {\n this.setImage();\n }\n }\n\n componentDidMount(): void {\n setTimeout(() => this.setImage(), 100);\n }\n\n setImage() {\n let source = this.props.image?.trim() as any;\n if (!source) {\n return;\n }\n if (source?.startsWith('url')) {\n source = this.props.image?.matchAll(IMAGE_URL_REGEX)?.next()?.value?.[1];\n }\n if (this.loadAsset) {\n source = this.loadAsset(source);\n }\n if (isFullPathUrl(source)) {\n source = {\n uri: source\n };\n }\n this.caluculateSize(source);\n this.setState({\n imageSrc: source\n } as BackgroundState);\n if (this.props.image) {\n ASSET_CACHE[this.props.image] = source;\n }\n }\n\n public getGradient() {\n return this.props.image?.trim().matchAll(LINEAT_GRADIENT_REGEX).next();\n }\n\n public renderImage() {\n const psresult = this.getPositionAndSize();\n return (\n <AssetConsumer>\n {(loadAsset) => {\n const loadImage = this.loadAsset !== loadAsset;\n this.loadAsset = loadAsset;\n if (loadImage) {\n setTimeout(() => this.setImage(), 10);\n }\n return (<View style={[{borderWidth: 0, overflow: 'hidden'}, StyleSheet.absoluteFill, this.props.style]}>\n <View style={[\n StyleSheet.absoluteFill, {\n flexDirection: 'row',\n justifyContent: psresult.position?.justifyContent,\n alignItems: psresult.position?.alignItems\n }]}>\n <View style={[\n { position: 'absolute', overflow: 'hidden' },\n psresult.position,\n isEmpty(psresult.size) ? StyleSheet.absoluteFill : psresult.size\n ]}>\n <Image\n source={this.state.imageSrc}\n resizeMode={psresult.resizeMode as any || 'cover'}\n style={[\n { \n width: '100%',\n height: '100%'\n }, \n !isEmpty(psresult.size)\n || (psresult.resizeMode === 'cover'\n || psresult.resizeMode === 'contain') ? null : {\n minWidth: this.state.naturalImageWidth,\n minHeight: this.state.naturalImageHeight\n }\n ]}/> \n </View>\n </View>\n </View>);\n }}\n </AssetConsumer>\n );\n }\n\n public render() {\n const gradientData = this.getGradient();\n if (gradientData?.value?.length) {\n return this.renderLinearGradient(gradientData.value[1]);\n } else if (this.props.image && this.state.imageSrc) {\n return this.renderImage();\n }\n return null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/styles/calc.js ADDED
@@ -0,0 +1,165 @@
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ export class CalcExpression {
5
+ constructor(expression, initialVariables = {}) {
6
+ _defineProperty(this, "expression", '');
7
+ _defineProperty(this, "currentIndex", 0);
8
+ _defineProperty(this, "variables", {});
9
+ this.expression = expression.trim();
10
+ this.expression = this.expression.replace(/%/g, " * (p / 100)");
11
+ this.expression = this.expression.replace(/vw/g, " * (vw / 100)");
12
+ this.expression = this.expression.replace(/vh/g, " * (vh / 100)");
13
+ if (this.expression.startsWith('calc(')) {
14
+ this.expression = this.expression.substring(5, this.expression.length - 1);
15
+ }
16
+ this.variables = {
17
+ ...initialVariables
18
+ };
19
+ this.resolveInnerCalc();
20
+ }
21
+ resolveInnerCalc() {
22
+ if (this.expression.indexOf('calc') >= 0) {
23
+ var _this$expression$matc;
24
+ (_this$expression$matc = this.expression.match(/calc\([^\c)]*\)/g)) === null || _this$expression$matc === void 0 || _this$expression$matc.map(m => {
25
+ this.expression = this.expression.replace(m, new CalcExpression(m, this.variables).evaluate() + "");
26
+ });
27
+ }
28
+ }
29
+ peek() {
30
+ if (this.currentIndex < this.expression.length) {
31
+ return this.expression[this.currentIndex];
32
+ }
33
+ return null;
34
+ }
35
+ consume() {
36
+ const char = this.peek();
37
+ if (char !== null) {
38
+ this.currentIndex++;
39
+ }
40
+ return char;
41
+ }
42
+ skipWhitespace() {
43
+ while (this.peek() !== null && /\s/.test(this.peek())) {
44
+ this.consume();
45
+ }
46
+ }
47
+ parseNumber() {
48
+ let numberStr = "";
49
+ let decimalSeen = false;
50
+ while (this.peek() !== null && (/\d/.test(this.peek()) || this.peek() === "." && !decimalSeen)) {
51
+ if (this.peek() === ".") {
52
+ decimalSeen = true;
53
+ }
54
+ numberStr += this.consume();
55
+ }
56
+ if (this.peek() === 'p') {
57
+ this.consume();
58
+ this.consume();
59
+ }
60
+ if (numberStr.length === 0) {
61
+ throw new Error(`Expected a number but found: ${this.peek()}`);
62
+ }
63
+ return parseFloat(numberStr);
64
+ }
65
+ parseVariable() {
66
+ let variableName = "";
67
+ while (this.peek() !== null && /[a-zA-Z0-9_]/.test(this.peek()) && (variableName.length > 0 || /[a-zA-Z_]/.test(this.peek()))) {
68
+ variableName += this.consume();
69
+ }
70
+ if (variableName.length === 0) {
71
+ throw new Error(`Expected a variable but found: ${this.peek()}`);
72
+ }
73
+ if (!(variableName in this.variables)) {
74
+ throw new Error(`Undefined variable: ${variableName}`);
75
+ }
76
+ return this.variables[variableName];
77
+ }
78
+ parseFactor() {
79
+ this.skipWhitespace();
80
+ const char = this.peek();
81
+ if (char === "(") {
82
+ this.consume();
83
+ const result = this.parseExpression();
84
+ this.skipWhitespace();
85
+ if (this.consume() !== ")") {
86
+ throw new Error("Expected ')'");
87
+ }
88
+ return result;
89
+ } else if (char === "-") {
90
+ this.consume();
91
+ return -this.parseFactor();
92
+ } else if (/\d/.test(char)) {
93
+ return this.parseNumber();
94
+ } else if (/[a-zA-Z_]/.test(char)) {
95
+ return this.parseVariable();
96
+ }
97
+ throw new Error(`Unexpected token: ${char}`);
98
+ }
99
+ parseTerm() {
100
+ let left = this.parseFactor();
101
+ this.skipWhitespace();
102
+ while (this.peek() === "*" || this.peek() === "/") {
103
+ const operator = this.consume();
104
+ const right = this.parseFactor();
105
+ if (operator === "*") {
106
+ left *= right;
107
+ } else if (operator === "/") {
108
+ if (right === 0) {
109
+ throw new Error("Division by zero");
110
+ }
111
+ left /= right;
112
+ }
113
+ this.skipWhitespace();
114
+ }
115
+ return left;
116
+ }
117
+ parseExponent() {
118
+ let base = this.parseTerm();
119
+ this.skipWhitespace();
120
+ while (this.peek() === "^") {
121
+ this.consume();
122
+ const exponent = this.parseFactor();
123
+ base = Math.pow(base, exponent);
124
+ this.skipWhitespace();
125
+ }
126
+ return base;
127
+ }
128
+ parseExpression() {
129
+ let left = this.parseExponent();
130
+ this.skipWhitespace();
131
+ while (this.peek() === "+" || this.peek() === "-") {
132
+ const operator = this.consume();
133
+ const right = this.parseExponent();
134
+ if (operator === "+") {
135
+ left += right;
136
+ } else if (operator === "-") {
137
+ left -= right;
138
+ }
139
+ this.skipWhitespace();
140
+ }
141
+ return left;
142
+ }
143
+ evaluate(variables) {
144
+ this.variables = {
145
+ ...this.variables,
146
+ ...(variables || {})
147
+ };
148
+ this.currentIndex = 0;
149
+ const result = this.parseExpression();
150
+ this.skipWhitespace();
151
+ if (this.peek() !== null) {
152
+ throw new Error(`Unexpected end of expression: ${this.peek()}`);
153
+ }
154
+ return result;
155
+ }
156
+ setVariable(variableName, value) {
157
+ this.variables[variableName] = value;
158
+ }
159
+ getVariables() {
160
+ return {
161
+ ...this.variables
162
+ };
163
+ }
164
+ }
165
+ //# sourceMappingURL=calc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CalcExpression","constructor","expression","initialVariables","_defineProperty","trim","replace","startsWith","substring","length","variables","resolveInnerCalc","indexOf","_this$expression$matc","match","map","m","evaluate","peek","currentIndex","consume","char","skipWhitespace","test","parseNumber","numberStr","decimalSeen","Error","parseFloat","parseVariable","variableName","parseFactor","result","parseExpression","parseTerm","left","operator","right","parseExponent","base","exponent","Math","pow","setVariable","value","getVariables"],"sources":["calc.ts"],"sourcesContent":["interface VariableMap {\n [key: string]: number;\n}\n\nexport class CalcExpression {\n \n private expression = '';\n private currentIndex: number = 0;\n private variables: VariableMap = {};\n\n constructor(expression: string, initialVariables: VariableMap = {}) {\n this.expression = expression.trim();\n this.expression = this.expression.replace(/%/g, \" * (p / 100)\");\n this.expression = this.expression.replace(/vw/g, \" * (vw / 100)\");\n this.expression = this.expression.replace(/vh/g, \" * (vh / 100)\");\n if (this.expression.startsWith('calc(')) {\n this.expression = this.expression.substring(5, this.expression.length - 1);\n }\n this.variables = { ...initialVariables };\n this.resolveInnerCalc();\n }\n\n private resolveInnerCalc() {\n if (this.expression.indexOf('calc') >= 0) {\n this.expression.match(/calc\\([^\\c)]*\\)/g)?.map(m => {\n this.expression = this.expression.replace(m, new CalcExpression(m, this.variables).evaluate() + \"\");\n })\n }\n }\n \n private peek(): string | null {\n if (this.currentIndex < this.expression.length) {\n return this.expression[this.currentIndex];\n }\n return null;\n }\n\n private consume(): string | null {\n const char = this.peek();\n if (char !== null) {\n this.currentIndex++;\n }\n return char;\n }\n\n private skipWhitespace(): void {\n while (this.peek() !== null && /\\s/.test(this.peek()!)) {\n this.consume();\n }\n }\n\n private parseNumber(): number {\n let numberStr = \"\";\n let decimalSeen = false;\n while (this.peek() !== null && (/\\d/.test(this.peek()!) || (this.peek() === \".\" && !decimalSeen))) {\n if (this.peek() === \".\") {\n decimalSeen = true;\n }\n numberStr += this.consume();\n }\n if (this.peek() === 'p') {\n this.consume();\n this.consume();\n }\n if (numberStr.length === 0) {\n throw new Error(`Expected a number but found: ${this.peek()}`);\n }\n return parseFloat(numberStr);\n }\n\n private parseVariable(): number {\n let variableName = \"\";\n while (this.peek() !== null && /[a-zA-Z0-9_]/.test(this.peek()!) && (variableName.length > 0 || /[a-zA-Z_]/.test(this.peek()!))) {\n variableName += this.consume();\n }\n if (variableName.length === 0) {\n throw new Error(`Expected a variable but found: ${this.peek()}`);\n }\n if (!(variableName in this.variables)) {\n throw new Error(`Undefined variable: ${variableName}`);\n }\n return this.variables[variableName];\n }\n\n private parseFactor(): number {\n this.skipWhitespace();\n const char = this.peek();\n\n if (char === \"(\") {\n this.consume();\n const result = this.parseExpression();\n this.skipWhitespace();\n if (this.consume() !== \")\") {\n throw new Error(\"Expected ')'\");\n }\n return result;\n } else if (char === \"-\") {\n this.consume();\n return -this.parseFactor();\n } else if (/\\d/.test(char!)) {\n return this.parseNumber();\n } else if (/[a-zA-Z_]/.test(char!)) {\n return this.parseVariable();\n }\n\n throw new Error(`Unexpected token: ${char}`);\n }\n\n private parseTerm(): number {\n let left = this.parseFactor();\n this.skipWhitespace();\n while (this.peek() === \"*\" || this.peek() === \"/\") {\n const operator = this.consume();\n const right = this.parseFactor();\n if (operator === \"*\") {\n left *= right;\n } else if (operator === \"/\") {\n if (right === 0) {\n throw new Error(\"Division by zero\");\n }\n left /= right;\n }\n this.skipWhitespace();\n }\n return left;\n }\n\n private parseExponent(): number {\n let base = this.parseTerm();\n this.skipWhitespace();\n while (this.peek() === \"^\") {\n this.consume();\n const exponent = this.parseFactor();\n base = Math.pow(base, exponent);\n this.skipWhitespace();\n }\n return base;\n }\n\n private parseExpression(): number {\n let left = this.parseExponent();\n this.skipWhitespace();\n while (this.peek() === \"+\" || this.peek() === \"-\") {\n const operator = this.consume();\n const right = this.parseExponent();\n if (operator === \"+\") {\n left += right;\n } else if (operator === \"-\") {\n left -= right;\n }\n this.skipWhitespace();\n }\n return left;\n }\n\n evaluate(variables?: any): number {\n this.variables = {\n ...this.variables,\n ...(variables || {})\n };\n this.currentIndex = 0;\n const result = this.parseExpression();\n this.skipWhitespace();\n if (this.peek() !== null) {\n throw new Error(`Unexpected end of expression: ${this.peek()}`);\n }\n return result;\n }\n\n setVariable(variableName: string, value: number): void {\n this.variables[variableName] = value;\n }\n\n getVariables(): VariableMap {\n return { ...this.variables };\n }\n}"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ var _ColorMix;
2
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
+ import Color from "colorjs.io";
6
+ const ColorMixSpace = [
7
+ //rectangular
8
+ "srgb", "srgb-linear", "display-p3", "a98-rgb", "prophoto-rgb", "rec2020", "lab", "oklab", "xyz", "xyz-d50", "xyz-d65",
9
+ //triangle
10
+ "hsl", "hwb", "lch", "oklch"];
11
+ const HueInterpolationMethod = ["shorter", "longer", "increasing", "decreasing"];
12
+ class ColorMix {
13
+ valueOf(expression) {
14
+ const {
15
+ colorInterpolationMethod,
16
+ colorPercent1,
17
+ colorPercent2
18
+ } = this.parse(expression);
19
+ let p1 = colorPercent1.percent;
20
+ let p2 = colorPercent2.percent;
21
+ if (p1 && !p2) {
22
+ p2 = 100 - p1;
23
+ } else if (!p1 && p2) {
24
+ p1 = 100 - p2;
25
+ } else if (p1 + p2 > 100) {
26
+ const sum = p1 + p2;
27
+ p1 = p1 / sum * 100;
28
+ p2 = p2 / sum * 100;
29
+ }
30
+ p1 = p1 / 100;
31
+ p2 = p2 / 100;
32
+ return new Color(colorPercent1.color).mix(colorPercent2.color, p2, {
33
+ space: colorInterpolationMethod.space,
34
+ hue: colorInterpolationMethod.hueInterpolationMethod
35
+ }).to("srgb").toString({
36
+ format: "hex"
37
+ });
38
+ }
39
+ parseColorInterpolationMethod(expression) {
40
+ const splits = expression.split(' ');
41
+ return {
42
+ space: splits[1],
43
+ hueInterpolationMethod: splits[2] || 'shorter'
44
+ };
45
+ }
46
+ parseColorPercent(expression) {
47
+ let colorCode = '';
48
+ let percent = 0;
49
+ if (expression.indexOf(')') > 0) {
50
+ const splits = expression.split(')').map(s => s.trim());
51
+ colorCode = splits[0] + ')';
52
+ percent = splits[1] ? parseFloat(splits[1].replace('%', '')) : 0;
53
+ } else {
54
+ const splits = expression.split(' ');
55
+ colorCode = splits[0];
56
+ percent = splits[1] ? parseFloat(splits[1].replace('%', '')) : 0;
57
+ }
58
+ return {
59
+ color: colorCode,
60
+ percent: percent
61
+ };
62
+ }
63
+ parse(expression) {
64
+ const splits = expression.split(',').map(s => s.trim());
65
+ return {
66
+ colorInterpolationMethod: this.parseColorInterpolationMethod(splits[0]),
67
+ colorPercent1: this.parseColorPercent(splits[1]),
68
+ colorPercent2: this.parseColorPercent(splits[2])
69
+ };
70
+ }
71
+ }
72
+ _ColorMix = ColorMix;
73
+ _defineProperty(ColorMix, "INSTANCE", new _ColorMix());
74
+ export default {
75
+ "valueOf": expression => {
76
+ if (expression.startsWith("color-mix")) {
77
+ expression = expression.substring("color-mix(".length, expression.length - 1);
78
+ }
79
+ return ColorMix.INSTANCE.valueOf(expression);
80
+ }
81
+ };
82
+ //# sourceMappingURL=color-mix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Color","ColorMixSpace","HueInterpolationMethod","ColorMix","valueOf","expression","colorInterpolationMethod","colorPercent1","colorPercent2","parse","p1","percent","p2","sum","color","mix","space","hue","hueInterpolationMethod","to","toString","format","parseColorInterpolationMethod","splits","split","parseColorPercent","colorCode","indexOf","map","s","trim","parseFloat","replace","_ColorMix","_defineProperty","startsWith","substring","length","INSTANCE"],"sources":["color-mix.ts"],"sourcesContent":["import Color from \"colorjs.io\";\n\nconst ColorMixSpace = [\n //rectangular\n \"srgb\", \"srgb-linear\", \"display-p3\" , \"a98-rgb\" , \"prophoto-rgb\" , \"rec2020\" ,\n \"lab\" , \"oklab\" , \"xyz\" , \"xyz-d50\" , \"xyz-d65\" ,\n //triangle\n \"hsl\" , \"hwb\" , \"lch\" , \"oklch\"\n];\n\nconst HueInterpolationMethod = [\n \"shorter\", \"longer\", \"increasing\", \"decreasing\"\n];\n\ninterface ColorInterpolationMethod {\n space: string,\n hueInterpolationMethod: string \n}\n\ninterface ColorPercent {\n color: string;\n percent: number;\n}\n\nclass ColorMix {\n static INSTANCE = new ColorMix();\n \n valueOf(expression: string) {\n const {\n colorInterpolationMethod, \n colorPercent1,\n colorPercent2\n } = this.parse(expression);\n let p1 = colorPercent1.percent;\n let p2 = colorPercent2.percent;\n if (p1 && !p2) {\n p2 = 100 - p1;\n } else if (!p1 && p2) {\n p1 = 100 - p2;\n } else if (p1 + p2 > 100) {\n const sum = p1 + p2;\n p1 = p1 / sum * 100;\n p2 = p2 / sum * 100;\n }\n p1 = p1/ 100;\n p2 = p2/ 100;\n \n return new Color(colorPercent1.color).mix(colorPercent2.color, p2, {\n space: colorInterpolationMethod.space,\n hue: colorInterpolationMethod.hueInterpolationMethod as any\n }).to(\"srgb\").toString({format: \"hex\"});\n }\n\n parseColorInterpolationMethod(expression: string): ColorInterpolationMethod {\n const splits = (expression.split(' ')) as string[];\n return {\n space: splits[1],\n hueInterpolationMethod: splits[2] || 'shorter'\n }\n }\n\n parseColorPercent(expression: string): ColorPercent {\n let colorCode = '';\n let percent = 0;\n if (expression.indexOf(')') > 0) {\n const splits = expression.split(')').map(s => s.trim());\n colorCode = splits[0] + ')';\n percent = splits[1] ? parseFloat((splits[1].replace('%', ''))) : 0;\n } else {\n const splits = (expression.split(' ')) as string[];\n colorCode = splits[0];\n percent = splits[1] ? parseFloat((splits[1].replace('%', ''))) : 0;\n }\n return {\n color: colorCode,\n percent: percent\n }\n }\n\n parse(expression: string): {\n colorInterpolationMethod : ColorInterpolationMethod,\n colorPercent1: ColorPercent,\n colorPercent2: ColorPercent\n } {\n const splits = expression.split(',').map(s => s.trim());\n return {\n colorInterpolationMethod: this.parseColorInterpolationMethod(splits[0]),\n colorPercent1: this.parseColorPercent(splits[1]),\n colorPercent2: this.parseColorPercent(splits[2])\n } as any;\n }\n\n}\n\nexport default {\n \"valueOf\" : (expression: string) => {\n if (expression.startsWith(\"color-mix\")) {\n expression = expression.substring(\"color-mix(\".length, expression.length - 1);\n }\n return ColorMix.INSTANCE.valueOf(expression);\n }\n};"],"mappings":"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","ignoreList":[]}