@vertigis/workflow 5.44.0 → 5.45.0

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 (101) hide show
  1. package/Activator.d.ts +1 -1
  2. package/Hooks.d.ts +2 -2
  3. package/IActivityHandler.d.ts +2 -2
  4. package/ProgramInspectorFacility.d.ts +1 -1
  5. package/ProgramInspectorFacility.js +1 -1
  6. package/TemplateUtils.js +1 -1
  7. package/Validation.d.ts +31 -31
  8. package/Validation.js +1 -1
  9. package/activities/arcgis/AddFeatureLayer.d.ts +1 -1
  10. package/activities/arcgis/AddFeatureLayer.js +1 -1
  11. package/activities/arcgis/AddFeatures.d.ts +1 -1
  12. package/activities/arcgis/ConvertValueToArcGisFieldType.d.ts +2 -2
  13. package/activities/arcgis/CreateGraphic.d.ts +1 -1
  14. package/activities/arcgis/DeleteFeatures.d.ts +1 -1
  15. package/activities/arcgis/FeatureSetFromJson.d.ts +1 -1
  16. package/activities/arcgis/GeometryFromJson.d.ts +1 -1
  17. package/activities/arcgis/GeoprocessingAsync.js +1 -1
  18. package/activities/arcgis/GetCurrentPosition.js +1 -1
  19. package/activities/arcgis/GetFormElementItemsFromFeatures.js +1 -1
  20. package/activities/arcgis/MapProvider.d.ts +23 -2
  21. package/activities/arcgis/MapProvider.js +1 -1
  22. package/activities/arcgis/ProjectServiceTask.d.ts +1 -1
  23. package/activities/arcgis/QueryTask.js +1 -1
  24. package/activities/arcgis/RelationServiceTask.js +1 -1
  25. package/activities/arcgis/RendererFromJson.d.ts +1 -1
  26. package/activities/arcgis/ResetLayerDefinitionExpression.d.ts +24 -0
  27. package/activities/arcgis/ResetLayerDefinitionExpression.js +1 -0
  28. package/activities/arcgis/ReverseGeocode.d.ts +1 -1
  29. package/activities/arcgis/RunWorkflow.js +1 -1
  30. package/activities/arcgis/SetImageryLayerOptions.d.ts +2 -2
  31. package/activities/arcgis/SetMap.d.ts +1 -1
  32. package/activities/arcgis/SetMap.js +1 -1
  33. package/activities/arcgis/SymbolFromJson.d.ts +1 -1
  34. package/activities/arcgis/TypeChecking.d.ts +0 -7
  35. package/activities/arcgis/TypeChecking.js +1 -1
  36. package/activities/arcgis/UpdateFeatures.d.ts +1 -1
  37. package/activities/arcgis/libs/arcGisRestApi.d.ts +1 -1
  38. package/activities/arcgis/shared.d.ts +1 -1
  39. package/activities/arcgis/shared.js +1 -1
  40. package/activities/arcgis/tools.js +1 -1
  41. package/activities/constants.js +1 -1
  42. package/activities/core/ChannelProvider.d.ts +2 -2
  43. package/activities/core/ChannelProvider.js +1 -1
  44. package/activities/core/ConvertToJson.d.ts +1 -1
  45. package/activities/core/ExecuteFunction.js +1 -1
  46. package/activities/core/FormatDate.d.ts +39 -1
  47. package/activities/core/FormatDate.js +1 -1
  48. package/activities/core/GetWorkflowInputs.d.ts +1 -1
  49. package/activities/core/ParseUrl.js +1 -1
  50. package/activities/core/SetProperty.d.ts +1 -1
  51. package/activities/core/TextReplace.js +1 -1
  52. package/activities/core/converters.d.ts +1 -1
  53. package/activities/essentials/RunEssentialsWorkflow.js +1 -1
  54. package/activities/forms/FormRenderer.js +1 -1
  55. package/activities/forms/GetFormElementItemsFromCollection.js +1 -1
  56. package/activities/forms/SetCurrentFormElementItem.js +1 -1
  57. package/activities/forms/SetFormElementEvent.js +1 -1
  58. package/activities/index.js +1 -1
  59. package/definition/ActivityInput.d.ts +1 -1
  60. package/definition/Program.d.ts +11 -6
  61. package/definition/ProgramInspector.d.ts +9 -2
  62. package/definition/ProgramInspector.js +1 -1
  63. package/execution/ActivityContext.js +1 -1
  64. package/execution/AmbientState.d.ts +5 -5
  65. package/execution/AmbientState.js +1 -1
  66. package/execution/AmbientStateProxy.d.ts +4 -4
  67. package/execution/Engine.d.ts +4 -4
  68. package/execution/Engine.js +1 -1
  69. package/execution/ModuleLoader.d.ts +1 -1
  70. package/forms/FormComponent.d.ts +1 -1
  71. package/forms/FormDefinition.d.ts +4 -4
  72. package/forms/FormHost.d.ts +2 -2
  73. package/forms/FormPresenterHost.d.ts +2 -2
  74. package/forms/components/AutoComplete.js +1 -1
  75. package/forms/components/ButtonBar.js +1 -1
  76. package/forms/components/CheckBox.js +1 -1
  77. package/forms/components/CheckGroup.js +1 -1
  78. package/forms/components/DateRangePicker.js +1 -1
  79. package/forms/components/DateTimePicker.js +1 -1
  80. package/forms/components/DateTimeTextField.js +1 -1
  81. package/forms/components/FormElement.js +1 -1
  82. package/forms/components/GeometryPicker.js +1 -1
  83. package/forms/components/ItemPicker.js +1 -1
  84. package/forms/components/Number.js +1 -1
  85. package/forms/components/NumberRangeSlider.js +1 -1
  86. package/forms/components/NumberSlider.js +1 -1
  87. package/forms/components/RadioGroup.js +1 -1
  88. package/forms/components/Scanner.js +1 -1
  89. package/forms/components/Section.js +1 -1
  90. package/forms/components/TextBox.js +1 -1
  91. package/forms/components/TimePicker.js +1 -1
  92. package/forms/customNumberFormat.js +1 -1
  93. package/forms/index.d.ts +2 -4
  94. package/forms/numberFormatter.js +1 -1
  95. package/forms/numberUtilities.js +1 -1
  96. package/forms/presenter.d.ts +3 -3
  97. package/forms/textUtilities.js +1 -1
  98. package/forms/utils.js +1 -1
  99. package/libs/version.d.ts +1 -1
  100. package/libs/version.js +1 -1
  101. package/package.json +8 -7
@@ -1 +1 @@
1
- import{inputClasses}from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{FormElementSize}from"../constants.js";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/Number.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{NumberDisplayFormat,DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT}from"../numberFormatter.js";import{areValuesEqual,enforceConstraints,getCurrencySymbolInfo,getNumberConstraints,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId,useLocale}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Number",numberClasses={large:`${PREFIX}-large`,medium:`${PREFIX}-medium`,small:`${PREFIX}-small`},StyledFormElement=styled(FormElement)(()=>({[`.${inputClasses.root}`]:{[`&.${numberClasses.large}`]:{width:"50%"},[`&.${numberClasses.medium}`]:{width:"33%"},[`&.${numberClasses.small}`]:{width:"25%"}}})),NumberComponent=({className:e,element:r,enabled:t,error:o,format:p,name:m,prompt:n,require:s,tooltip:a,value:i,setValue:u})=>{const l=useContext(HostContext),[c,b]=useState(!1),[f,d]=useState(),F=useRef(!0),C=`${makeUniqueId(m)}-input`,N=useLocale(),y=l.renderText(n),E=l.renderText(a),{currency:g,customDisplayFormat:D,decimals:R,displayFormat:v,endAdornment:I,isCustom:S,isFixedPoint:x,isPercent:P,numberConstraints:T,startAdornment:A}=useMemo(()=>{var e,r,t=p,o=t?.currency||DEFAULT_CURRENCY,m=t?.displayFormat,n=m===NumberDisplayFormat.CUSTOM,s=m===NumberDisplayFormat.FIXED_POINT,a=m===NumberDisplayFormat.PERCENT,i=getNumberConstraints(t,numberFormatConfiguration),u=t?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,t=m===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(t?.precision,i.step,numberFormatConfiguration);let l=null,c=null;return m===NumberDisplayFormat.CURRENCY||m===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(N,o))&&(r=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=r:c=r):!a||(e=getPercentSymbolInfo(N))&&(r=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=r:c=r),{currency:o,customDisplayFormat:u,decimals:t,displayFormat:m,endAdornment:c,isCustom:n,isFixedPoint:s,isPercent:a,numberConstraints:i,startAdornment:l}},[p]);n=useMemo(()=>v===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(D,f):-1,[f]);const{maximum:U,minimum:M,step:j}=T;a=P?R-2:R,a=Math.max(0,a);const z={currency:g,customDisplayFormat:D,format:v,fractionalDigits:a,locale:N},O=e=>{if("number"==typeof e)return{refValueType:"number",format:{lowerBound:M,precision:R,step:j,upperBound:U},display:l.formatNumber(e,z),numeric:e}},$=()=>{e=void 0===(e=f)?void 0:enforceConstraints(e,T),e=O(e);areValuesEqual(i,e)||u(e);var e=e?.numeric;e!==f&&d(e)};useEffect(()=>{F.current?F.current=!1:c||$()},[c,f]),useEffect(()=>{var e=h(i),r=void 0===e?void 0:O(e);areValuesEqual(i,r)||u(r,!1),e!==f&&d(e)},[i]);const h=e=>{let r;if(isNumber(e))r=e;else if(isString(e)){if(!e)return;r=l.coerceNumber(e,N)}else"number"==typeof e?.numeric&&(r=e.numeric);return"number"==typeof r&&0*r!=0&&(r=void 0),void 0===r?r:enforceConstraints(r,T)},q=e=>{var r,t=getKeyString(e);return"enter"===t?(r=e,$(),r.currentTarget.select(),r.stopPropagation(),r.preventDefault(),!1):"escape"===t?(t=e,(e=isNumberRef(i)?i.numeric:void 0)!==f&&d(e),t.currentTarget.select(),t.stopPropagation(),t.preventDefault(),!1):void 0},L=useFocusCallback(t,m,l);a="string"==typeof r.size?r.size:FormElementSize.Full;const _=S?n:R,w=clsx({[numberClasses.large]:a===FormElementSize.Large,[numberClasses.medium]:a===FormElementSize.Medium,[numberClasses.small]:a===FormElementSize.Small});return React.createElement(StyledFormElement,{className:e,element:r,inputId:C,name:m},e=>React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(S)return customFormatNumber(e,D,z.locale);P&&(e*=100);var r={format:x?z.format:void 0,fractionalDigits:z.fractionalDigits,locale:z.locale};return l.formatNumber(e,r)},parseNumber:e=>{if(S)return parseCustomFormattedNumber(e,D,z.locale);let r=l.coerceNumber(e,N);return P&&(r=preciseRound(r/100,R)),r}}},React.createElement(NumberInput,{allowUndefined:!0,className:w,correctOnBlur:!0,disabled:!t,endAdornment:I,error:!!o,inputProps:{...e,id:C,onKeyDown:q,title:E},inputRef:L,max:U,maxDecimalPlaces:_,min:M,onBlur:()=>{b(!1)},onChange:e=>d(e),onFocus:()=>{b(!0)},placeholder:y,required:s,size:"small",startAdornment:A,value:f})))};export default NumberComponent;export{numberClasses};
1
+ import{inputClasses}from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{FormElementSize}from"../constants.js";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/Number.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{NumberDisplayFormat,DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT}from"../numberFormatter.js";import{areValuesEqual,enforceConstraints,getCurrencySymbolInfo,getNumberConstraints,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId,useLocale}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Number",numberClasses={large:`${PREFIX}-large`,medium:`${PREFIX}-medium`,small:`${PREFIX}-small`},StyledFormElement=styled(FormElement)(()=>({[`.${inputClasses.root}`]:{[`&.${numberClasses.large}`]:{width:"50%"},[`&.${numberClasses.medium}`]:{width:"33%"},[`&.${numberClasses.small}`]:{width:"25%"}}})),NumberComponent=({className:e,element:r,enabled:t,error:m,format:p,name:o,prompt:s,require:n,tooltip:a,value:i,setValue:u})=>{const l=useContext(HostContext),[c,f]=useState(!1),[b,d]=useState(),F=useRef(!0),C=`${makeUniqueId(o)}-input`,N=useLocale(),y=l.renderText(s),E=l.renderText(a),{currency:g,customDisplayFormat:R,decimals:D,displayFormat:I,endAdornment:S,isCustom:v,isFixedPoint:x,isPercent:P,numberConstraints:T,startAdornment:A}=useMemo(()=>{var e,r,t=p,m=t?.currency||DEFAULT_CURRENCY,o=t?.displayFormat,s=o===NumberDisplayFormat.CUSTOM,n=o===NumberDisplayFormat.FIXED_POINT,a=o===NumberDisplayFormat.PERCENT,i=getNumberConstraints(t,numberFormatConfiguration),u=t?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,t=o===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(t?.precision,i.step,numberFormatConfiguration);let l=null,c=null;return o===NumberDisplayFormat.CURRENCY||o===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(N,m))&&(r=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=r:c=r):!a||(e=getPercentSymbolInfo(N))&&(r=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=r:c=r),{currency:m,customDisplayFormat:u,decimals:t,displayFormat:o,endAdornment:c,isCustom:s,isFixedPoint:n,isPercent:a,numberConstraints:i,startAdornment:l}},[p]);s=useMemo(()=>I===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(R,b):-1,[b]);const{maximum:U,minimum:M,step:j}=T;a=P?D-2:D,a=Math.max(0,a);const z={currency:g,customDisplayFormat:R,format:I,fractionalDigits:a,locale:N},O=e=>{if("number"==typeof e)return{refValueType:"number",format:{lowerBound:M,precision:D,step:j,upperBound:U},display:l.formatNumber(e,z),numeric:e}},$=()=>{e=void 0===(e=b)?void 0:enforceConstraints(e,T),e=O(e);areValuesEqual(i,e)||u(e);var e=e?.numeric;e!==b&&d(e)};useEffect(()=>{F.current?F.current=!1:c||$()},[c,b]),useEffect(()=>{var e=h(i),r=void 0===e?void 0:O(e);areValuesEqual(i,r)||u(r,!1),e!==b&&d(e)},[i]);const h=e=>{let r;if(isNumber(e))r=e;else if(isString(e)){if(!e)return;r=l.coerceNumber(e,N)}else"number"==typeof e?.numeric&&(r=e.numeric);return"number"==typeof r&&0*r!=0&&(r=void 0),void 0===r?r:enforceConstraints(r,T)},q=e=>{var r=getKeyString(e);if("enter"===r)$();else if("escape"===r)return r=e,(e=isNumberRef(i)?i.numeric:void 0)!==b&&d(e),r.currentTarget.select(),r.stopPropagation(),r.preventDefault(),!1},L=useFocusCallback(t,o,l);a="string"==typeof r.size?r.size:FormElementSize.Full;const _=v?s:D,w=clsx({[numberClasses.large]:a===FormElementSize.Large,[numberClasses.medium]:a===FormElementSize.Medium,[numberClasses.small]:a===FormElementSize.Small});return React.createElement(StyledFormElement,{className:e,element:r,inputId:C,name:o},e=>React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(v)return customFormatNumber(e,R,z.locale);P&&(e*=100);var r={format:x?z.format:void 0,fractionalDigits:z.fractionalDigits,locale:z.locale};return l.formatNumber(e,r)},parseNumber:e=>{if(v)return parseCustomFormattedNumber(e,R,z.locale);let r=l.coerceNumber(e,N);return P&&(r=preciseRound(r/100,D)),r}}},React.createElement(NumberInput,{allowUndefined:!0,className:w,correctOnBlur:!0,disabled:!t,endAdornment:S,error:!!m,inputProps:{...e,id:C,onKeyDown:q,title:E},inputRef:L,max:U,maxDecimalPlaces:_,min:M,onBlur:()=>{f(!1)},onChange:e=>d(e),onFocus:()=>{f(!0)},placeholder:y,required:n,size:"small",startAdornment:A,value:b})))};export default NumberComponent;export{numberClasses};
@@ -1 +1 @@
1
- import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import HostContext from"../hostContext.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{getCurrencySymbolInfo,getPercentSymbolInfo,preciseRound}from"../numberUtilities.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle,useLocale}from"../utils.js";import FormElement from"./FormElement.js";import FormLabelNumberField from"./FormLabelNumberField.js";import{useFocusCallback}from"./common.js";const PREFIX="NumberRangeSlider",numberRangeSliderClasses={container:`${PREFIX}-container`,inputContainer:`${PREFIX}-input-container`,toLabel:`${PREFIX}-to-label`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberRangeSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1),[`.${formControlClasses.root}`]:{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=({className:e,element:t,enabled:r,format:d,manualEntry:a,showMinMaxLabels:o,showTickMarks:m,name:n,raiseEvent:i,title:s,tooltip:l,value:u,setValue:c})=>{const p=useContext(HostContext),b=useLocale(),{currency:C,customDisplayFormat:F,decimals:f,displayFormat:g,endAdornment:N,isCustom:R,isFixedPoint:y,isPercent:S,numberConstraints:x,startAdornment:E}=useMemo(()=>{var e,t,r=d,a=r?.currency||DEFAULT_CURRENCY,o=r?.displayFormat,m=o===NumberDisplayFormat.CUSTOM,n=o===NumberDisplayFormat.FIXED_POINT,i=o===NumberDisplayFormat.PERCENT,s=getNumberConstraints(r,numberFormatConfiguration),l=r?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,r=o===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(r?.precision,s.step,numberFormatConfiguration);let u=null,c=null;return o===NumberDisplayFormat.CURRENCY||o===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(b,a))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?u=t:c=t):!i||(e=getPercentSymbolInfo(b))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?u=t:c=t),{currency:a,customDisplayFormat:l,decimals:r,displayFormat:o,endAdornment:c,isCustom:m,isFixedPoint:n,isPercent:i,numberConstraints:s,startAdornment:u}},[d]);var v=x["step"];const D=x.maximum,A=x.minimum,[T,I]=useState(!1),[L,P]=useState(!1),[M,U]=useState([A,D]);var h=useMemo(()=>g===NumberDisplayFormat.CUSTOM?[countDecimalsInCustomFormat(F,M[0]),countDecimalsInCustomFormat(F,M[1])]:[-1,-1],[M]);const $=useRef(!0),[k,j]=useMemo(()=>{var e=makeUniqueId(n);return[e,`${e}-slider-input`]},[n]);var O=!1!==o,_=!!m,o=!1!==a,m=S?f-2:f,m=Math.max(0,m);const X={currency:C,customDisplayFormat:F,format:g,fractionalDigits:m,locale:b};useEffect(()=>{var e;$.current?$.current=!1:L?B(M):T||(e=getNumberSliderValues(M,x),M[0]===e[0]&&M[1]===e[1]||U(e),w(u,e)||c(e))},[T,L,M]),useEffect(()=>{var e=getNumberSliderValues(u,x);w(u,e)||c(e,!1),w(M,e)||U(e)},[u]);const w=(e,t)=>void 0===e&&void 0===t[0]&&void 0===t[1]||(void 0===e&&null===t[0]&&null===t[1]||!(!Array.isArray(e)||2!==e.length||e[0]!==t[0]||e[1]!==t[1])),B=useMemo(()=>throttle(e=>{i("dragged",e)}),[]),V=useFocusCallback(r,n,p);a=p.renderText(l),m=!r&&!L,l=o?{max:D,min:A,onBlur:()=>{I(!1)},onFocus:()=>{I(!0)},step:v,title:a}:void 0,h=R?h:[f,f];return React.createElement(StyledFormElement,{className:e,element:t,inputId:`${j}-0`,name:n},React.createElement(Box,{className:numberRangeSliderClasses.container},React.createElement(Slider,{disabled:m,getAriaLabel:()=>p.renderText(s),getAriaValueText:e=>p.formatNumber(e,X),marks:getMarks(D,A,v,X,O,_),max:D,min:A,onChange:(e,t)=>{P(!0),Array.isArray(t)&&U(t)},onChangeCommitted:()=>{P(!1)},slotProps:{input:()=>({ref:e=>(null===e||e.id||(e.id=`${j}-${e.getAttribute("data-index")}`),V(e))})},step:v,title:a,value:M,valueLabelDisplay:"on",valueLabelFormat:(e,t)=>p.formatNumber(e,X)}),!1!=o&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(R)return customFormatNumber(e,F,X.locale);S&&(e*=100);var t={format:y?X.format:void 0,fractionalDigits:X.fractionalDigits,locale:X.locale};return p.formatNumber(e,t)},parseNumber:e=>{if(R)return parseCustomFormattedNumber(e,F,X.locale);let t=p.coerceNumber(e,b);return S&&(t=preciseRound(t/100,f)),t}}},React.createElement(Stack,{direction:"row",className:numberRangeSliderClasses.inputContainer},React.createElement(FormLabelNumberField,{disabled:!r,id:`${k}-startInput`,inputProps:l,endAdornment:N,label:p.renderText("@common-start"),max:D,maxDecimalPlaces:h[0],min:A,onChange:e=>{void 0===e&&(e=A),U([e,M[1]])},startAdornment:E,value:M[0]}),React.createElement(Box,{className:numberRangeSliderClasses.toLabel}," ",p.renderText("@common-to")," "),React.createElement(FormLabelNumberField,{disabled:!r,endAdornment:N,id:`${k}-endInput`,inputProps:l,label:p.renderText("@common-end"),max:D,maxDecimalPlaces:h[1],min:A,onChange:e=>{void 0===e&&(e=D),U([M[0],e])},startAdornment:E,value:M[1]})))))};export default NumberRangeSlider;export{numberRangeSliderClasses};
1
+ import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import HostContext from"../hostContext.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{getCurrencySymbolInfo,getPercentSymbolInfo,preciseRound}from"../numberUtilities.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle,useLocale}from"../utils.js";import FormElement from"./FormElement.js";import FormLabelNumberField from"./FormLabelNumberField.js";import{useFocusCallback}from"./common.js";const PREFIX="NumberRangeSlider",numberRangeSliderClasses={container:`${PREFIX}-container`,inputContainer:`${PREFIX}-input-container`,toLabel:`${PREFIX}-to-label`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberRangeSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1),[`.${formControlClasses.root}`]:{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=({className:e,element:t,enabled:r,format:d,manualEntry:a,showMinMaxLabels:o,showTickMarks:m,name:n,raiseEvent:i,title:s,tooltip:l,value:u,setValue:c})=>{const p=useContext(HostContext),b=useLocale(),{currency:C,customDisplayFormat:F,decimals:f,displayFormat:g,endAdornment:N,isCustom:R,isFixedPoint:y,isPercent:S,numberConstraints:x,startAdornment:E}=useMemo(()=>{var e,t,r=d,a=r?.currency||DEFAULT_CURRENCY,o=r?.displayFormat,m=o===NumberDisplayFormat.CUSTOM,n=o===NumberDisplayFormat.FIXED_POINT,i=o===NumberDisplayFormat.PERCENT,s=getNumberConstraints(r,numberFormatConfiguration),l=r?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,r=o===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(r?.precision,s.step,numberFormatConfiguration);let u=null,c=null;return o===NumberDisplayFormat.CURRENCY||o===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(b,a))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?u=t:c=t):!i||(e=getPercentSymbolInfo(b))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?u=t:c=t),{currency:a,customDisplayFormat:l,decimals:r,displayFormat:o,endAdornment:c,isCustom:m,isFixedPoint:n,isPercent:i,numberConstraints:s,startAdornment:u}},[d]);var v=x["step"];const D=x.maximum,A=x.minimum,[T,I]=useState(!1),[L,P]=useState(!1),[M,U]=useState([A,D]);var h=useMemo(()=>g===NumberDisplayFormat.CUSTOM?[countDecimalsInCustomFormat(F,M[0]),countDecimalsInCustomFormat(F,M[1])]:[-1,-1],[M]);const $=useRef(!0),[k,j]=useMemo(()=>{var e=makeUniqueId(n);return[e,`${e}-slider-input`]},[n]);var O=!1!==o,_=!!m,o=!1!==a,m=S?f-2:f,m=Math.max(0,m);const X={currency:C,customDisplayFormat:F,format:g,fractionalDigits:m,locale:b};useEffect(()=>{var e;$.current?$.current=!1:L?B(M):T||(e=getNumberSliderValues(M,x),M[0]===e[0]&&M[1]===e[1]||U(e),w(u,e)||c(e))},[T,L,M]),useEffect(()=>{var e=getNumberSliderValues(u,x);w(u,e)||c(e,!1),w(M,e)||U(e)},[u]);const w=(e,t)=>void 0===e&&void 0===t[0]&&void 0===t[1]||(void 0===e&&null===t[0]&&null===t[1]||!(!Array.isArray(e)||2!==e.length||e[0]!==t[0]||e[1]!==t[1])),B=useMemo(()=>throttle(e=>{i("dragged",e)}),[]),V=useFocusCallback(r,n,p);a=p.renderText(l),m=!r&&!L,l=o?{max:D,min:A,onBlur:()=>{I(!1)},onFocus:()=>{I(!0)},step:v,title:a}:void 0,h=R?h:[f,f];return React.createElement(StyledFormElement,{className:e,element:t,inputId:`${j}-0`,name:n},React.createElement(Box,{className:numberRangeSliderClasses.container},React.createElement(Slider,{disabled:m,getAriaLabel:()=>p.renderText(s),getAriaValueText:e=>p.formatNumber(e,X),marks:getMarks(D,A,v,X,O,_),max:D,min:A,onChange:(e,t)=>{P(!0),Array.isArray(t)&&U(t)},onChangeCommitted:()=>{P(!1)},slotProps:{input:()=>({ref:e=>(null===e||e.id||(e.id=`${j}-${e.getAttribute("data-index")}`),V(e))})},step:v,title:a,value:M,valueLabelDisplay:"on",valueLabelFormat:e=>p.formatNumber(e,X)}),!1!=o&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(R)return customFormatNumber(e,F,X.locale);S&&(e*=100);var t={format:y?X.format:void 0,fractionalDigits:X.fractionalDigits,locale:X.locale};return p.formatNumber(e,t)},parseNumber:e=>{if(R)return parseCustomFormattedNumber(e,F,X.locale);let t=p.coerceNumber(e,b);return S&&(t=preciseRound(t/100,f)),t}}},React.createElement(Stack,{direction:"row",className:numberRangeSliderClasses.inputContainer},React.createElement(FormLabelNumberField,{disabled:!r,id:`${k}-startInput`,inputProps:l,endAdornment:N,label:p.renderText("@common-start"),max:D,maxDecimalPlaces:h[0],min:A,onChange:e=>{void 0===e&&(e=A),U([e,M[1]])},startAdornment:E,value:M[0]}),React.createElement(Box,{className:numberRangeSliderClasses.toLabel}," ",p.renderText("@common-to")," "),React.createElement(FormLabelNumberField,{disabled:!r,endAdornment:N,id:`${k}-endInput`,inputProps:l,label:p.renderText("@common-end"),max:D,maxDecimalPlaces:h[1],min:A,onChange:e=>{void 0===e&&(e=D),U([M[0],e])},startAdornment:E,value:M[1]})))))};export default NumberRangeSlider;export{numberRangeSliderClasses};
@@ -1 +1 @@
1
- import Box from"@vertigis/react-ui/Box";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import HostContext from"../hostContext.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{areValuesEqual,getCurrencySymbolInfo,getMarks,getNumberConstraints,getNumberSliderValues,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle,useLocale}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="NumberSlider",numberSliderClasses={container:`${PREFIX}-container`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${inputBaseClasses.root}`]:{marginTop:e(1)}}})),NumberSlider=({className:e,element:t,enabled:r,error:a,format:p,manualEntry:o,showMinMaxLabels:m,showTickMarks:s,name:n,raiseEvent:i,title:u,tooltip:l,value:c,setValue:d})=>{const b=useContext(HostContext),f=useLocale(),{currency:C,customDisplayFormat:F,decimals:N,displayFormat:y,endAdornment:g,isCustom:E,isFixedPoint:S,isPercent:x,numberConstraints:D,startAdornment:R}=useMemo(()=>{var e,t,r=p,a=r?.currency||DEFAULT_CURRENCY,o=r?.displayFormat,m=o===NumberDisplayFormat.CUSTOM,s=o===NumberDisplayFormat.FIXED_POINT,n=o===NumberDisplayFormat.PERCENT,i=getNumberConstraints(r),u=r?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,r=o===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(r?.precision,i.step);let l=null,c=null;return o===NumberDisplayFormat.CURRENCY||o===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(f,a))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=t:c=t):!n||(e=getPercentSymbolInfo(f))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=t:c=t),{currency:a,customDisplayFormat:u,decimals:r,displayFormat:o,endAdornment:c,isCustom:m,isFixedPoint:s,isPercent:n,numberConstraints:i,startAdornment:l}},[p]),v=D["step"],I=D.maximum,A=D.minimum,[T,M]=useState(!1),[P,U]=useState(!1),[h,L]=useState(A);var k=useMemo(()=>y===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(F,h):-1,[h]);const B=useRef(!0);var O=`${makeUniqueId(n)}-input`,V=!1!==m,j=!!s,m=!1!==o,s=x?N-2:N,s=Math.max(0,s);const _={currency:C,customDisplayFormat:F,format:y,fractionalDigits:s,locale:f},q=e=>({refValueType:"number",format:{currency:C,customDisplayFormat:F,displayFormat:y,lowerBound:A,precision:N,step:v,upperBound:I},display:b.formatNumber(e,_),numeric:e});useEffect(()=>{var e;B.current?B.current=!1:P?$(h):T||((e=getNumberSliderValues(h,D,!0)[0])!==h&&L(e),e=q(e),areValuesEqual(c,e)||d(e))},[T,P,h]),useEffect(()=>{var e=getNumberSliderValues(c,D,!0)[0],t=q(e);areValuesEqual(c,t)||d(t,!1),h!==e&&L(e)},[c]);const $=useMemo(()=>throttle(e=>{i("dragged",q(e))}),[]);o=useFocusCallback(r,n,b),s=b.renderText(l),l=!r&&!P,r=!r,k=E?k:N;return React.createElement(StyledFormElement,{className:e,element:t,inputId:O,name:n},React.createElement(Box,{className:numberSliderClasses.container},React.createElement(Slider,{disabled:l,getAriaLabel:()=>b.renderText(u),getAriaValueText:e=>b.formatNumber(e,_),marks:getMarks(I,A,v,_,V,j),max:I,min:A,onChange:(e,t)=>{U(!0);t=Array.isArray(t)?t[0]:t;L(t)},onChangeCommitted:()=>{U(!1)},slotProps:{input:{id:O,ref:o}},step:v,title:s,value:"number"==typeof h?h:0,valueLabelDisplay:"on",valueLabelFormat:(e,t)=>b.formatNumber(e,_)}),!1!=m&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(E)return customFormatNumber(e,F,_.locale);x&&(e*=100);var t={format:S?_.format:void 0,fractionalDigits:_.fractionalDigits,locale:_.locale};return b.formatNumber(e,t)},parseNumber:e=>{if(E)return parseCustomFormattedNumber(e,F,_.locale);let t=b.coerceNumber(e,f);return x&&(t=preciseRound(t/100,N)),t}}},React.createElement(NumberInput,{correctOnBlur:!0,disabled:r,endAdornment:g,error:!!a,inputProps:{step:v,title:s},max:I,maxDecimalPlaces:k,min:A,onChange:e=>{void 0===e?L(A):L(e)},onFocus:()=>{M(!0)},onBlur:()=>{M(!1)},size:"small",startAdornment:R,value:h}))))};export default NumberSlider;export{numberSliderClasses};
1
+ import Box from"@vertigis/react-ui/Box";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import HostContext from"../hostContext.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{areValuesEqual,getCurrencySymbolInfo,getMarks,getNumberConstraints,getNumberSliderValues,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle,useLocale}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="NumberSlider",numberSliderClasses={container:`${PREFIX}-container`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${inputBaseClasses.root}`]:{marginTop:e(1)}}})),NumberSlider=({className:e,element:t,enabled:r,error:a,format:p,manualEntry:o,showMinMaxLabels:m,showTickMarks:s,name:n,raiseEvent:i,title:u,tooltip:l,value:c,setValue:d})=>{const b=useContext(HostContext),f=useLocale(),{currency:C,customDisplayFormat:F,decimals:N,displayFormat:y,endAdornment:g,isCustom:E,isFixedPoint:S,isPercent:x,numberConstraints:D,startAdornment:R}=useMemo(()=>{var e,t,r=p,a=r?.currency||DEFAULT_CURRENCY,o=r?.displayFormat,m=o===NumberDisplayFormat.CUSTOM,s=o===NumberDisplayFormat.FIXED_POINT,n=o===NumberDisplayFormat.PERCENT,i=getNumberConstraints(r),u=r?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,r=o===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(r?.precision,i.step);let l=null,c=null;return o===NumberDisplayFormat.CURRENCY||o===NumberDisplayFormat.ACCOUNTING?(e=getCurrencySymbolInfo(f,a))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=t:c=t):!n||(e=getPercentSymbolInfo(f))&&(t=React.createElement(InputAdornment,{position:e.position},e.symbol),"start"===e.position?l=t:c=t),{currency:a,customDisplayFormat:u,decimals:r,displayFormat:o,endAdornment:c,isCustom:m,isFixedPoint:s,isPercent:n,numberConstraints:i,startAdornment:l}},[p]),v=D["step"],I=D.maximum,A=D.minimum,[T,M]=useState(!1),[P,U]=useState(!1),[h,L]=useState(A);var k=useMemo(()=>y===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(F,h):-1,[h]);const B=useRef(!0);var O=`${makeUniqueId(n)}-input`,V=!1!==m,j=!!s,m=!1!==o,s=x?N-2:N,s=Math.max(0,s);const _={currency:C,customDisplayFormat:F,format:y,fractionalDigits:s,locale:f},q=e=>({refValueType:"number",format:{currency:C,customDisplayFormat:F,displayFormat:y,lowerBound:A,precision:N,step:v,upperBound:I},display:b.formatNumber(e,_),numeric:e});useEffect(()=>{var e;B.current?B.current=!1:P?$(h):T||((e=getNumberSliderValues(h,D,!0)[0])!==h&&L(e),e=q(e),areValuesEqual(c,e)||d(e))},[T,P,h]),useEffect(()=>{var e=getNumberSliderValues(c,D,!0)[0],t=q(e);areValuesEqual(c,t)||d(t,!1),h!==e&&L(e)},[c]);const $=useMemo(()=>throttle(e=>{i("dragged",q(e))}),[]);o=useFocusCallback(r,n,b),s=b.renderText(l),l=!r&&!P,r=!r,k=E?k:N;return React.createElement(StyledFormElement,{className:e,element:t,inputId:O,name:n},React.createElement(Box,{className:numberSliderClasses.container},React.createElement(Slider,{disabled:l,getAriaLabel:()=>b.renderText(u),getAriaValueText:e=>b.formatNumber(e,_),marks:getMarks(I,A,v,_,V,j),max:I,min:A,onChange:(e,t)=>{U(!0);t=Array.isArray(t)?t[0]:t;L(t)},onChangeCommitted:()=>{U(!1)},slotProps:{input:{id:O,ref:o}},step:v,title:s,value:"number"==typeof h?h:0,valueLabelDisplay:"on",valueLabelFormat:e=>b.formatNumber(e,_)}),!1!=m&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(E)return customFormatNumber(e,F,_.locale);x&&(e*=100);var t={format:S?_.format:void 0,fractionalDigits:_.fractionalDigits,locale:_.locale};return b.formatNumber(e,t)},parseNumber:e=>{if(E)return parseCustomFormattedNumber(e,F,_.locale);let t=b.coerceNumber(e,f);return x&&(t=preciseRound(t/100,N)),t}}},React.createElement(NumberInput,{correctOnBlur:!0,disabled:r,endAdornment:g,error:!!a,inputProps:{step:v,title:s},max:I,maxDecimalPlaces:k,min:A,onChange:e=>{void 0===e?L(A):L(e)},onFocus:()=>{M(!0)},onBlur:()=>{M(!1)},size:"small",startAdornment:R,value:h}))))};export default NumberSlider;export{numberSliderClasses};
@@ -1 +1 @@
1
- import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import Radio from"@vertigis/react-ui/Radio";import BaseRadioGroup from"@vertigis/react-ui/RadioGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext,useEffect}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,inspectItems}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({marginBottom:e(1.5)})),RadioGroup=({className:e,current:t,element:o,enabled:a,id:r,items:m,label:l,name:n,orientation:s,raiseEvent:i,setProperty:c,setValue:u,value:d})=>{const p=useContext(HostContext),f=inspectItems(t,m,d);var v=f.items;const R=[];var b=useFocusCallback(a,n,p);useEffect(()=>{t!==f.current&&c("current",f.current),l!==f.label&&c("label",f.label),d!==f.value&&u(f.value,!1)});for(const k in v){const y=v[k];var C=a&&!1!==y.enabled,E=p.renderText(y.tooltip),F=y.styleName?makeSafeClassName(y.styleName):void 0;R.push(React.createElement(FormControlLabel,{className:F,control:React.createElement(Radio,{inputRef:b,onClick:()=>{t!==k&&(c("current",k),y.value!==d?u(y.value,{item:k}):i("changed",y.value,void 0,k))}}),disabled:!C,key:k,label:React.createElement(Markdown,{text:y.label}),title:E,value:k}))}return React.createElement(StyledFormElement,{className:e,component:"fieldset",element:o,name:n},React.createElement(BaseRadioGroup,{name:r,row:s===Orientation.HORIZONTAL,value:t||""},R))};export default RadioGroup;
1
+ import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import Radio from"@vertigis/react-ui/Radio";import BaseRadioGroup from"@vertigis/react-ui/RadioGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext,useEffect}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,inspectItems}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({marginBottom:e(1.5)})),RadioGroup=({className:e,current:t,element:o,enabled:r,id:a,items:m,label:l,name:s,orientation:n,raiseEvent:i,setProperty:c,setValue:u,value:p})=>{const d=useContext(HostContext),f=inspectItems(t,m,p);var v=f.items;const R=[];var b=useFocusCallback(r,s,d);useEffect(()=>{t!==f.current&&c("current",f.current),l!==f.label&&c("label",f.label),p!==f.value&&u(f.value,!1)});for(const k in v){const y=v[k];var C=r&&!1!==y.enabled,E=d.renderText(y.tooltip),F=y.styleName?makeSafeClassName(y.styleName):void 0;R.push(React.createElement(FormControlLabel,{className:F,control:React.createElement(Radio,{onClick:()=>{t!==k&&(c("current",k),y.value!==p?u(y.value,{item:k}):i("changed",y.value,void 0,k))},slotProps:{input:{ref:b}}}),disabled:!C,key:k,label:React.createElement(Markdown,{text:y.label}),title:E,value:k}))}return React.createElement(StyledFormElement,{className:e,component:"fieldset",element:o,name:s},React.createElement(BaseRadioGroup,{name:a,row:n===Orientation.HORIZONTAL,value:t||""},R))};export default RadioGroup;
@@ -1 +1 @@
1
- import Button from"@vertigis/react-ui/Button";import Input from"@vertigis/react-ui/Input";import Stack from"@vertigis/react-ui/Stack";import{Close as CloseIcon,ScanBarcode,ScanMulti,ScanQr}from"@vertigis/react-ui/icons";import{styled}from"@vertigis/react-ui/styles";import{useState,useEffect,useRef,useContext}from"react";import*as React from"react";import{ScanType}from"../constants.js";import{scannerConfiguration}from"../elements/Scanner.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{isScanRef,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Scanner",scannerClasses={container:`${PREFIX}-container`,button:`${PREFIX}-button`,inputContainer:`${PREFIX}-inner`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${scannerClasses.container}`]:{gap:e(.5),video:{width:"100%"},[`.${scannerClasses.inputContainer}`]:{alignItems:"flex-start",gap:e(.5),[`.${scannerClasses.button}`]:{minWidth:0,padding:e(.5)}}}})),CAMERA_READY_TIMEOUT_MS=1500;var EntryMethod;!function(e){e.Camera="camera",e.Manual="manual"}(EntryMethod=EntryMethod||{});const convertToScanRef=(e,t,n)=>{var a=typeof e,a="number"==a||"string"==a?e.toString():e?.value?.toString();if(a)return t=t||e?.entryMethod||EntryMethod.Manual,{refValueType:"scan",value:a,scanType:n=n||e?.scanType,entryMethod:t}},Scanner=({autoActivate:e,className:t,element:n,enabled:a,manualEntry:r,name:o,raiseEvent:c,require:s,scanType:i,setProperty:l,setValue:u,size:m,tooltip:d,value:p})=>{const E=useContext(HostContext),[f,C]=useState(!0),[S,v]=useState(null),[y,g]=useState(""),[R,T]=useState(!1),[M,w]=useState(scannerConfiguration.rows.default),h=useRef(null);var A=`${makeUniqueId(o)}-input`;const I="barcode"!==i;useEffect(()=>{let e=scannerConfiguration.rows.default;"number"==typeof m&&(e=Math.max(scannerConfiguration.rows.minimum,m)),w(e)},[m]),useEffect(()=>(T(!0),()=>T(!1)),[]),useEffect(()=>{R&&a&&e&&(l("autoActivate",!1),x())},[R]),useEffect(()=>{S&&(C(!1),setTimeout(()=>{R&&C(!0)},CAMERA_READY_TIMEOUT_MS))},[S]);var _=useFocusCallback(a,o,E);useEffect(()=>{let e=p;!isScanRef(e)&&e&&(e=convertToScanRef(e),u(e,!1));var t=e?.value||"";y!==t&&g(t)},[p]);var D=E.renderText(d),d=!a,r=d||!r;const F=(e,t,n)=>{e&&p?.value!==e&&(n=convertToScanRef(e,t,n),u(n),g(e))},b=async e=>{var t=(await import("@zxing/browser"))["BarcodeFormat"];let n;return e===ScanType.QrCode?n=[t.AZTEC,t.DATA_MATRIX,t.MAXICODE,t.PDF_417,t.QR_CODE]:e===ScanType.BarCode&&(n=[t.CODABAR,t.CODE_39,t.CODE_93,t.CODE_128,t.EAN_8,t.EAN_13,t.ITF,t.RSS_14,t.RSS_EXPANDED,t.UPC_A,t.UPC_E,t.UPC_EAN_EXTENSION]),n},x=async()=>{if(S)return v(null),void c("cancel",void 0);const{BrowserCodeReader:o,BrowserMultiFormatReader:e}=await import("@zxing/browser");var t;R&&(t=await(async e=>{var t=(await import("@zxing/library"))["DecodeHintType"],e=await b(e);const n=new Map;return n.set(t.POSSIBLE_FORMATS,e),n})(i),t=new e(t),v(t),await(async e=>{try{var t=await o.listVideoInputDevices();if(!t||0==t.length)throw new DOMException("No video input devices detected.");const a=await e.decodeOnceFromVideoDevice(void 0,h.current||void 0),r=await b(ScanType.QrCode);var n=r.indexOf(a.getBarcodeFormat())<0?ScanType.BarCode:ScanType.QrCode;F(a.toString(),EntryMethod.Camera,n),v(null)}catch(e){e instanceof DOMException&&(l("error",e.message),v(null))}})(t))};return React.createElement(StyledFormElement,{className:t,element:n,inputId:A,name:o},React.createElement(Stack,{className:scannerClasses.container},React.createElement("video",{hidden:!S,ref:h}),React.createElement(Stack,{className:scannerClasses.inputContainer,direction:"row"},React.createElement(Input,{disabled:r,fullWidth:!0,id:A,inputProps:{title:D},inputRef:_,multiline:I,onBlur:e=>{0<e.currentTarget.value.length&&(v(null),F(e.currentTarget.value,EntryMethod.Manual))},onChange:e=>{g(e.currentTarget.value)},onKeyDown:e=>{"enter"===getKeyString(e)&&e.stopPropagation(),I||(e=e.currentTarget,v(null),F(e.value,EntryMethod.Manual))},required:s,rows:I?M:void 0,spellCheck:!1,value:y}),React.createElement(Button,{className:scannerClasses.button,color:"primary",disabled:d||!f,onClick:x,ref:_,title:D},S?React.createElement(CloseIcon,null):i===ScanType.BarCode?React.createElement(ScanBarcode,null):i===ScanType.QrCode?React.createElement(ScanQr,null):React.createElement(ScanMulti,null)))))};export default Scanner;export{scannerClasses};
1
+ import Button from"@vertigis/react-ui/Button";import Input from"@vertigis/react-ui/Input";import Stack from"@vertigis/react-ui/Stack";import{Close as CloseIcon,ScanBarcode,ScanMulti,ScanQr}from"@vertigis/react-ui/icons";import{styled}from"@vertigis/react-ui/styles";import{useState,useEffect,useRef,useContext}from"react";import*as React from"react";import{ScanType}from"../constants.js";import{scannerConfiguration}from"../elements/Scanner.js";import HostContext from"../hostContext.js";import{isScanRef,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Scanner",scannerClasses={container:`${PREFIX}-container`,button:`${PREFIX}-button`,inputContainer:`${PREFIX}-inner`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${scannerClasses.container}`]:{gap:e(.5),video:{width:"100%"},[`.${scannerClasses.inputContainer}`]:{alignItems:"flex-start",gap:e(.5),[`.${scannerClasses.button}`]:{minWidth:0,padding:e(.5)}}}})),CAMERA_READY_TIMEOUT_MS=1500;var EntryMethod;!function(e){e.Camera="camera",e.Manual="manual"}(EntryMethod=EntryMethod||{});const convertToScanRef=(e,t,a)=>{var n=typeof e,n="number"==n||"string"==n?e.toString():e?.value?.toString();if(n)return t=t||e?.entryMethod||EntryMethod.Manual,{refValueType:"scan",value:n,scanType:a=a||e?.scanType,entryMethod:t}},Scanner=({autoActivate:e,className:t,element:a,enabled:n,manualEntry:r,name:o,raiseEvent:c,require:s,scanType:i,setProperty:l,setValue:u,size:m,tooltip:d,value:p})=>{const E=useContext(HostContext),[f,C]=useState(!0),[S,v]=useState(null),[y,R]=useState(""),[T,g]=useState(!1),[M,w]=useState(scannerConfiguration.rows.default),h=useRef(null);var A=`${makeUniqueId(o)}-input`;const I="barcode"!==i;useEffect(()=>{let e=scannerConfiguration.rows.default;"number"==typeof m&&(e=Math.max(scannerConfiguration.rows.minimum,m)),w(e)},[m]),useEffect(()=>(g(!0),()=>g(!1)),[]),useEffect(()=>{T&&n&&e&&(l("autoActivate",!1),b())},[T]),useEffect(()=>{S&&(C(!1),setTimeout(()=>{T&&C(!0)},CAMERA_READY_TIMEOUT_MS))},[S]);var _=useFocusCallback(n,o,E);useEffect(()=>{let e=p;!isScanRef(e)&&e&&(e=convertToScanRef(e),u(e,!1));var t=e?.value||"";y!==t&&R(t)},[p]);var D=E.renderText(d),d=!n,r=d||!r;const F=(e,t,a)=>{e&&p?.value!==e&&(a=convertToScanRef(e,t,a),u(a),R(e))},x=async e=>{var t=(await import("@zxing/browser"))["BarcodeFormat"];let a;return e===ScanType.QrCode?a=[t.AZTEC,t.DATA_MATRIX,t.MAXICODE,t.PDF_417,t.QR_CODE]:e===ScanType.BarCode&&(a=[t.CODABAR,t.CODE_39,t.CODE_93,t.CODE_128,t.EAN_8,t.EAN_13,t.ITF,t.RSS_14,t.RSS_EXPANDED,t.UPC_A,t.UPC_E,t.UPC_EAN_EXTENSION]),a},b=async()=>{if(S)return v(null),void c("cancel",void 0);const{BrowserCodeReader:o,BrowserMultiFormatReader:e}=await import("@zxing/browser");var t;T&&(t=await(async e=>{var t=(await import("@zxing/library"))["DecodeHintType"],e=await x(e);const a=new Map;return a.set(t.POSSIBLE_FORMATS,e),a})(i),t=new e(t),v(t),await(async e=>{try{var t=await o.listVideoInputDevices();if(!t||0==t.length)throw new DOMException("No video input devices detected.");const n=await e.decodeOnceFromVideoDevice(void 0,h.current||void 0),r=await x(ScanType.QrCode);var a=r.indexOf(n.getBarcodeFormat())<0?ScanType.BarCode:ScanType.QrCode;F(n.toString(),EntryMethod.Camera,a),v(null)}catch(e){e instanceof DOMException&&(l("error",e.message),v(null))}})(t))};return React.createElement(StyledFormElement,{className:t,element:a,inputId:A,name:o},React.createElement(Stack,{className:scannerClasses.container},React.createElement("video",{hidden:!S,ref:h}),React.createElement(Stack,{className:scannerClasses.inputContainer,direction:"row"},React.createElement(Input,{disabled:r,fullWidth:!0,id:A,inputProps:{title:D},inputRef:_,multiline:I,onBlur:e=>{0<e.currentTarget.value.length&&(v(null),F(e.currentTarget.value,EntryMethod.Manual))},onChange:e=>{R(e.currentTarget.value)},onKeyDown:e=>{I||(e=e.currentTarget,v(null),F(e.value,EntryMethod.Manual))},required:s,rows:I?M:void 0,spellCheck:!1,value:y}),React.createElement(Button,{className:scannerClasses.button,color:"primary",disabled:d||!f,onClick:b,ref:_,title:D},S?React.createElement(CloseIcon,null):i===ScanType.BarCode?React.createElement(ScanBarcode,null):i===ScanType.QrCode?React.createElement(ScanQr,null):React.createElement(ScanMulti,null)))))};export default Scanner;export{scannerClasses};
@@ -1 +1 @@
1
- import Accordion,{accordionClasses}from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import FormLabel from"@vertigis/react-ui/FormLabel";import ChevronDown from"@vertigis/react-ui/icons/ChevronDown";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext,useEffect}from"react";import{defs}from"../FormHost.js";import HostContext from"../hostContext.js";import{getLabelId,isAccordionSection,isCollapsibleSection,isFieldsetSection,isTabSection,makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";import{renderAccessibleDescription,renderDescription,renderError,useFocusCallback}from"./common.js";const PREFIX="WorkflowSection",sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,tabSection:`${PREFIX}-tabSetSection`,title:`${PREFIX}-title`,unstyledSection:`${PREFIX}-unstyledSection`,description:`${PREFIX}-description`},StyledAccordion=styled(Accordion)(({theme:{spacing:e}})=>({[`.${accordionClasses.region}`]:{padding:e(1),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:e(.5)}}})),StyledTabPage=styled(Box)(({theme:{spacing:e}})=>({padding:e(1)})),StyledSection=styled(Box)(({theme:{palette:e,spacing:t,typography:{pxToRem:o}}})=>({margin:`${t(4)} 0 ${t(4)} 0`,[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:t(.5)},[`&.${sectionClasses.basicSection}`]:{borderLeft:`6px solid ${e.primary[500]}`,paddingLeft:t(1),paddingRight:t(1)},[`&.${sectionClasses.fieldSetSection}`]:{position:"relative",border:`3px solid ${e.primary[500]}`,borderLeft:"none",borderRight:"none",padding:`${t(3)} 0 ${t(2)} 0`,[`.${sectionClasses.title}`]:{backgroundColor:e.background.default,position:"absolute",top:o(-22),left:0,padding:0,"& span":{paddingRight:t(1)}}},[`&.${sectionClasses.unstyledSection}`]:{marginBottom:0,marginTop:0}})),Section=({accessibleDescription:e,className:t,collapsed:o,component:i,description:s,element:n,enabled:r,error:a,name:c,setProperty:l})=>{const d=useContext(HostContext);let m;null!=n&&n.format&&(m=n.format),m=void 0!==m&&null!==m?m:defs.DEFAULT_SECTION_FORMAT;const p=isAccordionSection(n);var S=isFieldsetSection(n),f=isTabSection(n);const b=p||f||isCollapsibleSection(n);var u=`${makeUniqueId(c)}-input`,g=useFocusCallback(r,c,d);useEffect(()=>(d.refs[c]=i,()=>{d.refs[c]=void 0}),[]);var C,y,E,$=(C=n,y=u,E=S?"legend":void 0,React.createElement(FormLabel,{className:sectionClasses.title,error:b&&(d.hasInvalidChild(C)||!!a),id:getLabelId(y),component:E||"h6"},React.createElement(Markdown,{inline:!0,text:C.title}))),r=renderDescription(s,u,r,sectionClasses.description),e=renderAccessibleDescription(e,s,u,d),s=renderError(a),u={"aria-labelledby":$?.props?.id,"aria-details":r?.props?.id,"aria-describedby":e?.props?.id},s=[r,e,s,i.props.children],n=clsx(t,n.type,sectionClasses.root,{[sectionClasses.basicSection]:"basic-section"===m,[sectionClasses.fieldSetSection]:"fieldset-section"===m,[sectionClasses.tabSection]:"tab-section"===m,[sectionClasses.unstyledSection]:"unstyled-section"===m,[makeSafeClassName(c)]:!!c,[makeSafeClassName(n.styleName)]:!!n.styleName});if(f)return React.createElement(StyledTabPage,{"aria-labelledby":`simple-tab-${c}`,className:n,hidden:o,id:`simple-tabpanel-${c}`,role:"tabpanel"},...s);if(b)return React.createElement(StyledAccordion,{className:n,expanded:!0!==o,onChange:(e,t)=>{p&&t?d.updateMutuallyExclusiveSections(c):l("collapsed",!t)},...u},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:g},$),...s);{const i=S?"fieldset":"section";return React.createElement(StyledSection,{className:n,component:i,...u},$,React.createElement(Box,null,...s))}};export default Section;export{sectionClasses};
1
+ import Accordion,{accordionClasses}from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import FormLabel from"@vertigis/react-ui/FormLabel";import ChevronDown from"@vertigis/react-ui/icons/ChevronDown";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext,useEffect}from"react";import{defs}from"../FormHost.js";import HostContext from"../hostContext.js";import{getLabelId,isAccordionSection,isCollapsibleSection,isFieldsetSection,isTabSection,makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";import{renderAccessibleDescription,renderDescription,renderError,useFocusCallback}from"./common.js";const PREFIX="WorkflowSection",sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,tabSection:`${PREFIX}-tabSetSection`,title:`${PREFIX}-title`,unstyledSection:`${PREFIX}-unstyledSection`,description:`${PREFIX}-description`},StyledAccordion=styled(Accordion)(({theme:{spacing:e}})=>({[`.${accordionClasses.region}`]:{padding:e(1),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:e(.5)}}})),StyledTabPage=styled(Box)(({theme:{spacing:e}})=>({padding:e(1)})),StyledSection=styled("div")(({theme:{palette:e,spacing:t,typography:{pxToRem:o}}})=>({margin:`${t(4)} 0 ${t(4)} 0`,[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:t(.5)},[`&.${sectionClasses.basicSection}`]:{borderLeft:`6px solid ${e.primary[500]}`,paddingLeft:t(1),paddingRight:t(1)},[`&.${sectionClasses.fieldSetSection}`]:{position:"relative",border:`3px solid ${e.primary[500]}`,borderLeft:"none",borderRight:"none",padding:`${t(3)} 0 ${t(2)} 0`,[`.${sectionClasses.title}`]:{backgroundColor:e.background.default,position:"absolute",top:o(-22),left:0,padding:0,"& span":{paddingRight:t(1)}}},[`&.${sectionClasses.unstyledSection}`]:{marginBottom:0,marginTop:0}})),Section=({accessibleDescription:e,className:t,collapsed:o,component:i,description:s,element:n,enabled:r,error:a,name:c,setProperty:l})=>{const d=useContext(HostContext);let m;null!=n&&n.format&&(m=n.format),m=void 0!==m&&null!==m?m:defs.DEFAULT_SECTION_FORMAT;const p=isAccordionSection(n);var S=isFieldsetSection(n),f=isTabSection(n);const b=p||f||isCollapsibleSection(n);var u=`${makeUniqueId(c)}-input`,g=useFocusCallback(r,c,d);useEffect(()=>(d.refs[c]=i,()=>{d.refs[c]=void 0}),[]);var C,y,E,$=(C=n,y=u,E=S?"legend":void 0,React.createElement(FormLabel,{className:sectionClasses.title,error:b&&(d.hasInvalidChild(C)||!!a),id:getLabelId(y),component:E||"h6"},React.createElement(Markdown,{inline:!0,text:C.title}))),r=renderDescription(s,u,r,sectionClasses.description),e=renderAccessibleDescription(e,s,u,d),s=renderError(a),u={"aria-labelledby":$?.props?.id,"aria-details":r?.props?.id,"aria-describedby":e?.props?.id},s=[r,e,s,i.props.children],n=clsx(t,n.type,sectionClasses.root,{[sectionClasses.basicSection]:"basic-section"===m,[sectionClasses.fieldSetSection]:"fieldset-section"===m,[sectionClasses.tabSection]:"tab-section"===m,[sectionClasses.unstyledSection]:"unstyled-section"===m,[makeSafeClassName(c)]:!!c,[makeSafeClassName(n.styleName)]:!!n.styleName});if(f)return React.createElement(StyledTabPage,{"aria-labelledby":`simple-tab-${c}`,className:n,hidden:o,id:`simple-tabpanel-${c}`,role:"tabpanel"},...s);if(b)return React.createElement(StyledAccordion,{className:n,expanded:!0!==o,onChange:(e,t)=>{p&&t?d.updateMutuallyExclusiveSections(c):l("collapsed",!t)},...u},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:g},$),...s);{const i=S?"fieldset":"section";return React.createElement(StyledSection,{className:n,component:i,...u},$,React.createElement(Box,null,...s))}};export default Section;export{sectionClasses};
@@ -1 +1 @@
1
- import Input from"@vertigis/react-ui/Input";import*as React from"react";import{useContext,useEffect,useState}from"react";import{FormElementTypes}from"../constants.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const TextBox=({className:e,element:t,enabled:r,type:o,maxLength:n,name:a,prompt:m,readOnly:s,require:u,tooltip:l,value:i,setValue:p})=>{const c=useContext(HostContext),[f,d]=useState(""),g=`${makeUniqueId(a)}-input`,x=o===FormElementTypes.PASSWORDBOX,v=x?void 0:n,y=c.renderText(m),E=x?void 0:s,C=c.renderText(l);useEffect(()=>{let e="";"string"==typeof i?e=i:"number"!=typeof i||x||(e=c.formatNumber(i)),i!==e&&p(e,!1),f!==e&&d(e)},[i]);const T=e=>{p(e),d(e)},b=e=>{e=e.target.value;e!=i&&T(e)},F=e=>{e=e.target.value;e!=f&&d(e)},h=e=>{var t=getKeyString(e);return"enter"===t?(e=>{const t=e.currentTarget;var r=t.value;if(r!==i)return T(r),t.select(),e.stopPropagation(),e.preventDefault(),!1})(e):"escape"===t?(e=>{const t=e.currentTarget;if(t.value!==i)return d(i||""),t.select(),e.stopPropagation(),e.preventDefault(),!1})(e):void 0},j=useFocusCallback(r,a,c);return React.createElement(FormElement,{className:e,element:t,inputId:g,name:a},e=>React.createElement(Input,{disabled:!r,fullWidth:!0,id:g,inputProps:{...e,maxLength:v,onKeyDown:h,title:C},inputRef:j,onBlur:b,onChange:F,placeholder:y,readOnly:E,required:u,type:x?"password":"text",value:f}))};export default TextBox;
1
+ import Input from"@vertigis/react-ui/Input";import*as React from"react";import{useContext,useEffect,useState}from"react";import{FormElementTypes}from"../constants.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const TextBox=({className:e,element:t,enabled:r,type:o,maxLength:n,name:a,prompt:m,readOnly:s,require:u,tooltip:l,value:i,setValue:p})=>{const c=useContext(HostContext),[f,d]=useState(""),x=`${makeUniqueId(a)}-input`,g=o===FormElementTypes.PASSWORDBOX,v=g?void 0:n,y=c.renderText(m),E=g?void 0:s,C=c.renderText(l);useEffect(()=>{let e="";"string"==typeof i?e=i:"number"!=typeof i||g||(e=c.formatNumber(i)),i!==e&&p(e,!1),f!==e&&d(e)},[i]);const T=e=>{p(e),d(e)},b=e=>{e=e.target.value;e!=i&&T(e)},F=e=>{e=e.target.value;e!=f&&d(e)},h=e=>{var t=getKeyString(e);return"enter"===t?(e=>{e=e.currentTarget.value;e!==i&&T(e)})(e):"escape"===t?(e=>{const t=e.currentTarget;if(t.value!==i)return d(i||""),t.select(),e.stopPropagation(),e.preventDefault(),!1})(e):void 0},j=useFocusCallback(r,a,c);return React.createElement(FormElement,{className:e,element:t,inputId:x,name:a},e=>React.createElement(Input,{disabled:!r,fullWidth:!0,id:x,inputProps:{...e,maxLength:v,onKeyDown:h,title:C},inputRef:j,onBlur:b,onChange:F,placeholder:y,readOnly:E,required:u,type:g?"password":"text",value:f}))};export default TextBox;
@@ -1 +1 @@
1
- import{buttonBaseClasses}from"@vertigis/react-ui/ButtonBase";import FormHelperText from"@vertigis/react-ui/FormHelperText";import{clockClasses}from"@vertigis/react-ui/TimeClock";import BaseTimePicker from"@vertigis/react-ui/TimePicker";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import{areValuesEqual,getDateBounds,getNewElementValue,makeProperValue}from"../dateUtilities.js";import HostContext from"../hostContext.js";import{isInvalidError}from"../textUtilities.js";import{makeUniqueId,useLocale}from"../utils.js";import DateTimeTextField from"./DateTimeTextField.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const StylableTimePicker=e=>{let{className:t,slotProps:r,...o}=e;return r=r||{},React.createElement(BaseTimePicker,{slotProps:{...r,popper:{...r.popper,className:t}},...o})},StyledTimePicker=styled(StylableTimePicker)(({theme:{palette:e}})=>({[`& .${clockClasses.amButton}, .${clockClasses.pmButton}`]:{[`&.${buttonBaseClasses.focusVisible}`]:{color:e.action.active}}})),TimePicker=({className:e,element:t,enabled:r,error:o,format:a,name:s,prompt:i,setProperty:l,setValue:m,tooltip:n,value:u})=>{const c=useContext(HostContext),[p,d]=useState(!1),[f,T]=useState(!1),[k,E]=useState(!1),[x,v]=useState(null),C=useRef();const F={locale:useLocale(),timezone:(new Intl.DateTimeFormat).resolvedOptions().timeZone},P=useRef(!0),g=useFocusCallback(r,s,c),B=c.renderText(n),R=Calendar.useNative(),S="time",V=isInvalidError(o);useEffect(()=>{var e=makeProperValue(u,R),t=getNewElementValue(e,S,F,R);areValuesEqual(u,t)||m(t,!1),v(e||null)},[u]),useEffect(()=>{if(!k&&!f)if(p)V||l("error",{status:"invalid"});else{if(V&&l("error",void 0),P.current)return void(P.current=!1);var e=getNewElementValue(x,S,F,R);areValuesEqual(u,e)||m(e)}P.current=!1},[p,f,k]);const{min:b,max:y}=getDateBounds(a),j=useMemo(()=>`${makeUniqueId(s)}-input`,[s]),N=c.renderText(i);return React.createElement(FormElement,{className:e,element:t,inputId:j,name:s},e=>React.createElement(React.Fragment,null,V&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},C.current),React.createElement(StyledTimePicker,{disabled:!r,inputRef:e=>{e&&(C.current=e.dataset.formatString,g(e))},key:"date-picker",maxTime:y,minTime:b,onChange:e=>v(e),onClose:()=>E(!1),onError:e=>d(!!e),onOpen:()=>E(!0),slots:{textField:DateTimeTextField},slotProps:{textField:{error:!!o,id:j,inputProps:{...e,placeholder:N},onBlur:()=>T(!1),onFocus:()=>T(!0),title:B}},value:x})))};export default TimePicker;
1
+ import{buttonBaseClasses}from"@vertigis/react-ui/ButtonBase";import FormHelperText from"@vertigis/react-ui/FormHelperText";import{clockClasses}from"@vertigis/react-ui/TimeClock";import BaseTimePicker from"@vertigis/react-ui/TimePicker";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import{areValuesEqual,getDateBounds,getNewElementValue,makeProperValue}from"../dateUtilities.js";import HostContext from"../hostContext.js";import{isInvalidError}from"../textUtilities.js";import{makeUniqueId,useLocale}from"../utils.js";import DateTimeTextField from"./DateTimeTextField.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const StylableTimePicker=e=>{const{className:t,slotProps:r,...o}=e;return React.createElement(BaseTimePicker,{slotProps:{...r,popper:{...r?.popper,className:t}},...o})},StyledTimePicker=styled(StylableTimePicker)(({theme:{palette:e}})=>({[`& .${clockClasses.amButton}, .${clockClasses.pmButton}`]:{[`&.${buttonBaseClasses.focusVisible}`]:{color:e.action.active}}})),TimePicker=({className:e,element:t,enabled:r,error:o,format:a,name:s,prompt:i,setProperty:l,setValue:m,tooltip:n,value:u})=>{const c=useContext(HostContext),[p,d]=useState(!1),[f,T]=useState(!1),[k,E]=useState(!1),[x,v]=useState(null),C=useRef();const F={locale:useLocale(),timezone:(new Intl.DateTimeFormat).resolvedOptions().timeZone},P=useRef(!0),g=useFocusCallback(r,s,c),B=c.renderText(n),R=Calendar.useNative(),S="time",V=isInvalidError(o);useEffect(()=>{var e=makeProperValue(u,R),t=getNewElementValue(e,S,F,R);areValuesEqual(u,t)||m(t,!1),v(e||null)},[u]),useEffect(()=>{if(!k&&!f)if(p)V||l("error",{status:"invalid"});else{if(V&&l("error",void 0),P.current)return void(P.current=!1);var e=getNewElementValue(x,S,F,R);areValuesEqual(u,e)||m(e)}P.current=!1},[p,f,k]);const{min:b,max:y}=getDateBounds(a),j=useMemo(()=>`${makeUniqueId(s)}-input`,[s]),N=c.renderText(i);return React.createElement(FormElement,{className:e,element:t,inputId:j,name:s},e=>React.createElement(React.Fragment,null,V&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},C.current),React.createElement(StyledTimePicker,{disabled:!r,inputRef:e=>{e&&(C.current=e.dataset.formatString,g(e))},key:"date-picker",maxTime:y,minTime:b,onChange:e=>v(e),onClose:()=>E(!1),onError:e=>d(!!e),onOpen:()=>E(!0),slots:{textField:DateTimeTextField},slotProps:{textField:{error:!!o,id:j,inputProps:{...e,placeholder:N},onBlur:()=>T(!1),onFocus:()=>T(!0),title:B}},value:x})))};export default TimePicker;
@@ -1 +1 @@
1
- import{DEFAULT_LOCALE}from"../constants.js";import{getPercentSymbolInfo,preciseRound}from"./numberUtilities.js";const CustomSpecifiers={Comma:",",DecimalPoint:".",Hash:"#",Percent:"%",Permille:"‰",Semicolon:";",Zero:"0"};function countDecimalsInCustomFormat(e,t){if(!e)return 0;const r=inspectCustomFormat(e=chooseCustomFormatSection(e.split(CustomSpecifiers.Semicolon),t))["parts"];return r.some(e=>"exponentSeparator"===e.type)?void 0:r.some(e=>"decimal"===e.type)?r.filter(e=>"fraction"===e.type).length+2*r.filter(e=>"percentSign"===e.type).length+3*r.filter(e=>"permilleSign"===e.type).length:0}function inspectCustomFormat(e){const t=[];let r=!1,n=!1,i=!1,a=!1;const o=/,|0|#|%|‰|[Ee]|[+-]|\.|\\.|(["'])[^\1]+\1|[^,0#%‰Ee+-\.\\"'+]+/g;for(var l;null!==(l=o.exec(e));){const g=l[0];switch(g){case CustomSpecifiers.Comma:!a||r||n||t.push({type:"group",value:CustomSpecifiers.Comma});break;case CustomSpecifiers.DecimalPoint:r||(t.push({type:"decimal",value:CustomSpecifiers.DecimalPoint}),r=!0);break;case CustomSpecifiers.Hash:n?t.push({type:"exponentInteger",value:CustomSpecifiers.Hash}):r?t.push({type:"fraction",value:CustomSpecifiers.Hash}):(t.push({type:"integer",value:CustomSpecifiers.Hash}),a=!0);break;case CustomSpecifiers.Percent:t.push({type:"percentSign",value:CustomSpecifiers.Percent});break;case CustomSpecifiers.Permille:t.push({type:"permilleSign",value:CustomSpecifiers.Permille});break;case CustomSpecifiers.Zero:n?t.push({type:"exponentInteger",value:CustomSpecifiers.Zero}):r?t.push({required:!0,type:"fraction",value:CustomSpecifiers.Zero}):(t.push({required:!0,type:"integer",value:CustomSpecifiers.Zero}),a=!0);break;case"E":case"e":n?t.push({type:"literal",value:g}):(t.push({type:"exponentSeparator",value:g}),n=!0);break;case"+":n&&!i?(t.push({type:"exponentPlusSign",value:g}),i=!0):t.push({type:"literal",value:g});break;case"-":n&&!i?(t.push({type:"exponentMinusSign",value:g}),i=!0):t.push({type:"literal",value:g});break;default:g.startsWith("\\")?t.push({type:"literal",value:g[1]}):g.startsWith('"')||g.startsWith("'")?t.push({type:"literal",value:g.substring(1,g.length-1)}):t.push({type:"literal",value:g})}}let u=1;var p=t.findLastIndex(e=>"integer"===e.type);if(-1!==p)for(var s=p+1;"group"===t[s]?.type;)u/=1e3,t.splice(s,1);p=t.some(e=>"group"===e.type);let m=t.findIndex(e=>"group"===e.type);for(;-1!==m;)t.splice(m,1),m=t.findIndex(e=>"group"===e.type);var c=t.filter(e=>"percentSign"===e.type).length;for(let e=0;e<c;e++)u*=100;var f=t.filter(e=>"permilleSign"===e.type).length;for(let e=0;e<f;e++)u*=1e3;return{multiplier:u,parts:t,useGrouping:p}}function chooseCustomFormatSection(e,t){var[r,n,i]=e;if(void 0===t)return r;switch(e.length){case 3:if(0===t)return i;case 2:if(t<0&&n)return n;default:return r}}function customFormatNumber(t,e,r=DEFAULT_LOCALE){if(!e){const b=new Intl.NumberFormat(r);return b.format(t)}var n=e.split(CustomSpecifiers.Semicolon),i=(e=chooseCustomFormatSection(n,t))===n[0]&&t<0;const{multiplier:a,parts:o,useGrouping:l}=inspectCustomFormat(e),u={minimumFractionDigits:0,maximumFractionDigits:0};t*=a;var p=o.filter(e=>"fraction"===e.type&&!e.required).length,s=o.filter(e=>"fraction"===e.type&&e.required).length,n=s+p+2*o.filter(e=>"percentSign"===e.type).length+3*o.filter(e=>"permilleSign"===e.type).length;let m=[];var c=t=>{for(let e=t.length-1;0<=e;e--)if(""===t[e].value||0===e)return t[e]};if(o.some(e=>"exponentSeparator"===e.type)){const E=o.filter(e=>"integer"===e.type);var f,e=E.findIndex(e=>"integer"===e.type&&e.required),p=E.findIndex(e=>"integer"===e.type&&!e.required),e=-1===e?0:E.length-e,g=-1===p?e:Math.max(e,E.length-p);if(g<=1)m=new Intl.NumberFormat(r,{maximumFractionDigits:n,minimumFractionDigits:s,notation:"scientific",useGrouping:!1}).formatToParts(t);else{const _=new Intl.NumberFormat(r,{maximumFractionDigits:20,minimumFractionDigits:1,minimumIntegerDigits:1,useGrouping:!1});m=_.formatToParts(t);const T=m.find(e=>"integer"===e.type),P=m.find(e=>"fraction"===e.type);let e=0;for(;T.value.length>g;){var v=T.value[T.value.length-1];P.value=v+P.value,T.value=T.value.substring(0,T.value.length-1),e++}for(;"0"===T.value||T.value.length<g;)0===P.value.length?T.value=T.value.padStart(g,"0"):(f=P.value[0],"0"===T.value?T.value=f:T.value+=f,P.value=P.value.substring(1),e--);var y=preciseRound(parseFloat(m.map(e=>e.value).join("")),n);m=_.formatToParts(y),m.push({type:"exponentSeparator",value:"E"}),e<0&&m.push({type:"exponentMinusSign",value:"-"}),m.push({type:"exponentInteger",value:Math.abs(e).toString()})}const R=o.find(e=>"exponentMinusSign"===e.type||"exponentPlusSign"===e.type);p="+"===R?.value?"always":"negativeOnly",y=m.some(e=>"exponentMinusSign"===e.type);"always"==p&&y?R.value="-":"negativeOnly"==p&&(y?R||(y=o.findIndex(e=>"exponentSeparator"===e.type)+1,o.splice(y,0,{type:"exponentMinusSign",value:"-"})):R&&(R.value="")),o.filter(e=>"exponentInteger"===e.type).forEach(e=>e.value="");var h=m.find(e=>"exponentInteger"===e.type)?.value.split("")||[],C=o.filter(e=>"exponentInteger"===e.type);for(let e=h.length-1;0<=e;e--){const L=c(C);if(!L)break;L.value=h[e]+L.value}o.filter(e=>"exponentInteger"===e.type&&""===e.value).forEach(e=>e.value="0")}else{(0<s||0<n)&&(u.minimumFractionDigits=s,u.maximumFractionDigits=n);const D=new Intl.NumberFormat(r,u);m=D.formatToParts(t)}o.filter(e=>"integer"===e.type||"fraction"===e.type).forEach(e=>e.value="");var S=m.filter(e=>"integer"===e.type).map(e=>e.value.split("")).flat();if(1<S.length||"0"!==S[0]){var I=o.filter(e=>"integer"===e.type);for(let e=S.length-1;0<=e;e--){const H=c(I);if(!H)break;H.value=S[e]+H.value}}var d=m.filter(e=>"fraction"===e.type).map(e=>e.value.split("")).flat();const A=o.filter(e=>"fraction"===e.type);for(let e=0;e<d.length;e++){const M=(()=>{for(let e=0;e<A.length;e++)if(""===A[e].value)return A[e]})();if(!M)break;M.value=d[e]}if(o.filter(e=>e.required&&""===e.value).forEach(e=>e.value="0"),l){for(let t=0;t<o.length;t++){const V=o[t];if("integer"===V.type&&1<V.value.length){var N=V.type,x=V.value.split("");o[t]={type:N,value:x[0]};for(let e=1;e<x.length;e++)o.splice(t+e,0,{type:N,value:x[e]})}}let e=o.findLastIndex(e=>"integer"===e.type);for(;1<=e;){var F=e-2;if("integer"!==o[F-1]?.type)break;o.splice(F,0,{type:"group",value:","}),e=F-1}}if(r!==DEFAULT_LOCALE){const{decimalChar:k,groupChar:w}=getNumberFormatChars(r);k!==INVARIANT_DECIMAL_CHAR&&o.filter(e=>"decimal"===e.type).forEach(e=>e.value=k),w!==INVARIANT_GROUP_CHAR&&o.filter(e=>"group"===e.type).forEach(e=>e.value=w);const O=getPercentSymbolInfo(r)?.symbol||INVARIANT_PERCENT_CHAR;O!==INVARIANT_PERCENT_CHAR&&o.filter(e=>"percentSign"===e.type).forEach(e=>e.value=O)}return!i||-1!==(i=o.findIndex(e=>"integer"===e.type))&&o.splice(i,0,{type:"minusSign",value:"-"}),o.map(e=>e.value).join("")}const INVARIANT_DECIMAL_CHAR=".",INVARIANT_GROUP_CHAR=",",INVARIANT_LOCALE="en-US",INVARIANT_MINUS_SIGN="-",INVARIANT_PERCENT_CHAR="%";function getNumberFormatChars(e){let t=INVARIANT_DECIMAL_CHAR,r=INVARIANT_GROUP_CHAR;const n=new Intl.NumberFormat(e),i=n.formatToParts(1234.5);e=i.find(e=>"group"===e.type);e&&(r=e.value);e=i.find(e=>"decimal"===e.type);return e&&(t=e.value),{groupChar:r,decimalChar:t}}function parseCustomFormattedNumberToParts(e,t=DEFAULT_LOCALE){var{groupChar:r,decimalChar:n}=getNumberFormatChars(t),t=getPercentSymbolInfo(t)?.symbol||INVARIANT_PERCENT_CHAR;const i=[];let a={},o;const l=[n,r,t];var u=e=>{i.push(e),a[e.type]=!0},p={exponentInteger:!0,fraction:!0,integer:!0};for(const m of e){let e=o?.type||"unknown";var s=/[0-9\u0660-\u0669\u06f0-\u06f9]/.test(m);l.includes(m)?(e=m===n?"decimal":m===r?"group":"percentSign",o={type:e,value:m},u(o)):"‰"!==m?"e"!==m.toLowerCase()?"-"!==m.toLocaleLowerCase()?s?o?e in p?o.value+=m:(e=a.decimal?a.fraction?"exponentInteger":"fraction":"integer",o={type:e,value:m},u(o)):(o={type:"integer",value:m},u(o)):"literal"==o?.type?o.value+=m:(o={type:"literal",value:m},u(o)):(e=a.integer||a.decimal?a.exponentSeparator?"exponentMinusSign":"literal":"minusSign",o={type:e,value:m},u(o)):(o={type:"exponentSeparator",value:m},u(o)):(u({type:"literal",value:m}),o=void 0)}return i}function parseCustomFormattedNumber(e,t,r=DEFAULT_LOCALE){let n=parseCustomFormattedNumberToParts(e,r);const i=t.split(CustomSpecifiers.Semicolon),a=i.map(e=>inspectCustomFormat(e));var o=a.map(e=>e.parts.filter(e=>"percentSign"===e.type).length),l=a.map(e=>e.parts.filter(e=>"permilleSign"===e.type).length);const u=["group","literal","percentSign"];n=n.filter(e=>!u.includes(e.type)),r!=INVARIANT_LOCALE&&(n.filter(e=>"decimal"===e.type).forEach(e=>e.value=INVARIANT_DECIMAL_CHAR),n.filter(e=>"minusSign"===e.type||"exponentMinusSign"===e.type).forEach(e=>e.value=INVARIANT_MINUS_SIGN),n.filter(e=>"integer"===e.type||"fraction"===e.type||"exponentInteger"===e.type).forEach(e=>e.value=e.value.replaceAll(/[\u0660-\u0669\u06f0-\u06f9]/g,e=>(15&e.charCodeAt(0)).toString())));t=n.map(e=>e.value).join("");let p=parseFloat(t);if(0===p)return p;let s=n.filter(e=>"fraction"===e.type).map(e=>e.value).join("").length;!n.some(e=>"exponentMinusSign"===e.type)||(m=n.find(e=>"exponentInteger"===e.type))&&(c=parseInt(m.value),s+=c);var m=i[1];if(m){const f=a[1]["multiplier"];var c=p;c/=f;const g=s+2*o[1]+3*l[1];if(customFormatNumber(c=preciseRound(p,g),m,r)===e)return c<0?c:-c}const f=a[0]["multiplier"];p/=f;const g=s+2*o[0]+3*l[0];return p=preciseRound(p,g),p}export{countDecimalsInCustomFormat,inspectCustomFormat,customFormatNumber,parseCustomFormattedNumberToParts,parseCustomFormattedNumber};
1
+ import{DEFAULT_LOCALE}from"../constants.js";import{getPercentSymbolInfo,preciseRound}from"./numberUtilities.js";const CustomSpecifiers={Comma:",",DecimalPoint:".",Hash:"#",Percent:"%",Permille:"‰",Semicolon:";",Zero:"0"};function countDecimalsInCustomFormat(e,t){if(!e)return 0;const r=inspectCustomFormat(e=chooseCustomFormatSection(e.split(CustomSpecifiers.Semicolon),t))["parts"];return r.some(e=>"exponentSeparator"===e.type)?void 0:r.some(e=>"decimal"===e.type)?r.filter(e=>"fraction"===e.type).length+2*r.filter(e=>"percentSign"===e.type).length+3*r.filter(e=>"permilleSign"===e.type).length:0}function inspectCustomFormat(e){const t=[];let r=!1,n=!1,i=!1,a=!1;const o=/,|0|#|%|‰|[Ee]|[+-]|\.|\\.|(["'])[^1]+\1|[^,0#%‰Ee+-.\\"'+]+/g;for(var l;null!==(l=o.exec(e));){const g=l[0];switch(g){case CustomSpecifiers.Comma:!a||r||n||t.push({type:"group",value:CustomSpecifiers.Comma});break;case CustomSpecifiers.DecimalPoint:r||(t.push({type:"decimal",value:CustomSpecifiers.DecimalPoint}),r=!0);break;case CustomSpecifiers.Hash:n?t.push({type:"exponentInteger",value:CustomSpecifiers.Hash}):r?t.push({type:"fraction",value:CustomSpecifiers.Hash}):(t.push({type:"integer",value:CustomSpecifiers.Hash}),a=!0);break;case CustomSpecifiers.Percent:t.push({type:"percentSign",value:CustomSpecifiers.Percent});break;case CustomSpecifiers.Permille:t.push({type:"permilleSign",value:CustomSpecifiers.Permille});break;case CustomSpecifiers.Zero:n?t.push({type:"exponentInteger",value:CustomSpecifiers.Zero}):r?t.push({required:!0,type:"fraction",value:CustomSpecifiers.Zero}):(t.push({required:!0,type:"integer",value:CustomSpecifiers.Zero}),a=!0);break;case"E":case"e":n?t.push({type:"literal",value:g}):(t.push({type:"exponentSeparator",value:g}),n=!0);break;case"+":n&&!i?(t.push({type:"exponentPlusSign",value:g}),i=!0):t.push({type:"literal",value:g});break;case"-":n&&!i?(t.push({type:"exponentMinusSign",value:g}),i=!0):t.push({type:"literal",value:g});break;default:g.startsWith("\\")?t.push({type:"literal",value:g[1]}):g.startsWith('"')||g.startsWith("'")?t.push({type:"literal",value:g.substring(1,g.length-1)}):t.push({type:"literal",value:g})}}let u=1;var p=t.findLastIndex(e=>"integer"===e.type);if(-1!==p)for(var s=p+1;"group"===t[s]?.type;)u/=1e3,t.splice(s,1);p=t.some(e=>"group"===e.type);let m=t.findIndex(e=>"group"===e.type);for(;-1!==m;)t.splice(m,1),m=t.findIndex(e=>"group"===e.type);var c=t.filter(e=>"percentSign"===e.type).length;for(let e=0;e<c;e++)u*=100;var f=t.filter(e=>"permilleSign"===e.type).length;for(let e=0;e<f;e++)u*=1e3;return{multiplier:u,parts:t,useGrouping:p}}function chooseCustomFormatSection(e,t){var[r,n,i]=e;if(void 0===t)return r;switch(e.length){case 3:if(0===t)return i;case 2:if(t<0&&n)return n;default:return r}}function customFormatNumber(t,e,r=DEFAULT_LOCALE){if(!e){const b=new Intl.NumberFormat(r);return b.format(t)}var n=e.split(CustomSpecifiers.Semicolon),i=(e=chooseCustomFormatSection(n,t))===n[0]&&t<0;const{multiplier:a,parts:o,useGrouping:l}=inspectCustomFormat(e),u={minimumFractionDigits:0,maximumFractionDigits:0};t*=a;var p=o.filter(e=>"fraction"===e.type&&!e.required).length,s=o.filter(e=>"fraction"===e.type&&e.required).length,n=s+p+2*o.filter(e=>"percentSign"===e.type).length+3*o.filter(e=>"permilleSign"===e.type).length;let m=[];var c=t=>{for(let e=t.length-1;0<=e;e--)if(""===t[e].value||0===e)return t[e]};if(o.some(e=>"exponentSeparator"===e.type)){const E=o.filter(e=>"integer"===e.type);var f,e=E.findIndex(e=>"integer"===e.type&&e.required),p=E.findIndex(e=>"integer"===e.type&&!e.required),e=-1===e?0:E.length-e,g=-1===p?e:Math.max(e,E.length-p);if(g<=1)m=new Intl.NumberFormat(r,{maximumFractionDigits:n,minimumFractionDigits:s,notation:"scientific",useGrouping:!1}).formatToParts(t);else{const _=new Intl.NumberFormat(r,{maximumFractionDigits:20,minimumFractionDigits:1,minimumIntegerDigits:1,useGrouping:!1});m=_.formatToParts(t);const T=m.find(e=>"integer"===e.type),P=m.find(e=>"fraction"===e.type);let e=0;for(;T.value.length>g;){var v=T.value[T.value.length-1];P.value=v+P.value,T.value=T.value.substring(0,T.value.length-1),e++}for(;"0"===T.value||T.value.length<g;)0===P.value.length?T.value=T.value.padStart(g,"0"):(f=P.value[0],"0"===T.value?T.value=f:T.value+=f,P.value=P.value.substring(1),e--);var y=preciseRound(parseFloat(m.map(e=>e.value).join("")),n);m=_.formatToParts(y),m.push({type:"exponentSeparator",value:"E"}),e<0&&m.push({type:"exponentMinusSign",value:"-"}),m.push({type:"exponentInteger",value:Math.abs(e).toString()})}const R=o.find(e=>"exponentMinusSign"===e.type||"exponentPlusSign"===e.type);p="+"===R?.value?"always":"negativeOnly",y=m.some(e=>"exponentMinusSign"===e.type);"always"==p&&y?R.value="-":"negativeOnly"==p&&(y?R||(y=o.findIndex(e=>"exponentSeparator"===e.type)+1,o.splice(y,0,{type:"exponentMinusSign",value:"-"})):R&&(R.value="")),o.filter(e=>"exponentInteger"===e.type).forEach(e=>e.value="");var h=m.find(e=>"exponentInteger"===e.type)?.value.split("")||[],C=o.filter(e=>"exponentInteger"===e.type);for(let e=h.length-1;0<=e;e--){const L=c(C);if(!L)break;L.value=h[e]+L.value}o.filter(e=>"exponentInteger"===e.type&&""===e.value).forEach(e=>e.value="0")}else{(0<s||0<n)&&(u.minimumFractionDigits=s,u.maximumFractionDigits=n);const D=new Intl.NumberFormat(r,u);m=D.formatToParts(t)}o.filter(e=>"integer"===e.type||"fraction"===e.type).forEach(e=>e.value="");var S=m.filter(e=>"integer"===e.type).map(e=>e.value.split("")).flat();if(1<S.length||"0"!==S[0]){var I=o.filter(e=>"integer"===e.type);for(let e=S.length-1;0<=e;e--){const H=c(I);if(!H)break;H.value=S[e]+H.value}}var d=m.filter(e=>"fraction"===e.type).map(e=>e.value.split("")).flat();const A=o.filter(e=>"fraction"===e.type);for(let e=0;e<d.length;e++){const M=(()=>{for(let e=0;e<A.length;e++)if(""===A[e].value)return A[e]})();if(!M)break;M.value=d[e]}if(o.filter(e=>e.required&&""===e.value).forEach(e=>e.value="0"),l){for(let t=0;t<o.length;t++){const V=o[t];if("integer"===V.type&&1<V.value.length){var N=V.type,x=V.value.split("");o[t]={type:N,value:x[0]};for(let e=1;e<x.length;e++)o.splice(t+e,0,{type:N,value:x[e]})}}let e=o.findLastIndex(e=>"integer"===e.type);for(;1<=e;){var F=e-2;if("integer"!==o[F-1]?.type)break;o.splice(F,0,{type:"group",value:","}),e=F-1}}if(r!==DEFAULT_LOCALE){const{decimalChar:k,groupChar:w}=getNumberFormatChars(r);k!==INVARIANT_DECIMAL_CHAR&&o.filter(e=>"decimal"===e.type).forEach(e=>e.value=k),w!==INVARIANT_GROUP_CHAR&&o.filter(e=>"group"===e.type).forEach(e=>e.value=w);const O=getPercentSymbolInfo(r)?.symbol||INVARIANT_PERCENT_CHAR;O!==INVARIANT_PERCENT_CHAR&&o.filter(e=>"percentSign"===e.type).forEach(e=>e.value=O)}return!i||-1!==(i=o.findIndex(e=>"integer"===e.type))&&o.splice(i,0,{type:"minusSign",value:"-"}),o.map(e=>e.value).join("")}const INVARIANT_DECIMAL_CHAR=".",INVARIANT_GROUP_CHAR=",",INVARIANT_LOCALE="en-US",INVARIANT_MINUS_SIGN="-",INVARIANT_PERCENT_CHAR="%";function getNumberFormatChars(e){let t=INVARIANT_DECIMAL_CHAR,r=INVARIANT_GROUP_CHAR;const n=new Intl.NumberFormat(e),i=n.formatToParts(1234.5);e=i.find(e=>"group"===e.type);e&&(r=e.value);e=i.find(e=>"decimal"===e.type);return e&&(t=e.value),{groupChar:r,decimalChar:t}}function parseCustomFormattedNumberToParts(e,t=DEFAULT_LOCALE){var{groupChar:r,decimalChar:n}=getNumberFormatChars(t),t=getPercentSymbolInfo(t)?.symbol||INVARIANT_PERCENT_CHAR;const i=[],a={};let o;const l=[n,r,t];var u=e=>{i.push(e),a[e.type]=!0},p={exponentInteger:!0,fraction:!0,integer:!0};for(const m of e){let e=o?.type||"unknown";var s=/[0-9\u0660-\u0669\u06f0-\u06f9]/.test(m);l.includes(m)?(e=m===n?"decimal":m===r?"group":"percentSign",o={type:e,value:m},u(o)):"‰"!==m?"e"!==m.toLowerCase()?"-"!==m.toLocaleLowerCase()?s?o?e in p?o.value+=m:(e=a.decimal?a.fraction?"exponentInteger":"fraction":"integer",o={type:e,value:m},u(o)):(o={type:"integer",value:m},u(o)):"literal"==o?.type?o.value+=m:(o={type:"literal",value:m},u(o)):(e=a.integer||a.decimal?a.exponentSeparator?"exponentMinusSign":"literal":"minusSign",o={type:e,value:m},u(o)):(o={type:"exponentSeparator",value:m},u(o)):(u({type:"literal",value:m}),o=void 0)}return i}function parseCustomFormattedNumber(e,t,r=DEFAULT_LOCALE){let n=parseCustomFormattedNumberToParts(e,r);const i=t.split(CustomSpecifiers.Semicolon),a=i.map(e=>inspectCustomFormat(e));var o=a.map(e=>e.parts.filter(e=>"percentSign"===e.type).length),l=a.map(e=>e.parts.filter(e=>"permilleSign"===e.type).length);const u=["group","literal","percentSign"];n=n.filter(e=>!u.includes(e.type)),r!=INVARIANT_LOCALE&&(n.filter(e=>"decimal"===e.type).forEach(e=>e.value=INVARIANT_DECIMAL_CHAR),n.filter(e=>"minusSign"===e.type||"exponentMinusSign"===e.type).forEach(e=>e.value=INVARIANT_MINUS_SIGN),n.filter(e=>"integer"===e.type||"fraction"===e.type||"exponentInteger"===e.type).forEach(e=>e.value=e.value.replaceAll(/[\u0660-\u0669\u06f0-\u06f9]/g,e=>(15&e.charCodeAt(0)).toString())));t=n.map(e=>e.value).join("");let p=parseFloat(t);if(0===p)return p;let s=n.filter(e=>"fraction"===e.type).map(e=>e.value).join("").length;!n.some(e=>"exponentMinusSign"===e.type)||(m=n.find(e=>"exponentInteger"===e.type))&&(c=parseInt(m.value),s+=c);var m=i[1];if(m){const f=a[1]["multiplier"];var c=p;c/=f;const g=s+2*o[1]+3*l[1];if(customFormatNumber(c=preciseRound(p,g),m,r)===e)return c<0?c:-c}const f=a[0]["multiplier"];p/=f;const g=s+2*o[0]+3*l[0];return p=preciseRound(p,g),p}export{countDecimalsInCustomFormat,inspectCustomFormat,customFormatNumber,parseCustomFormattedNumberToParts,parseCustomFormattedNumber};
package/forms/index.d.ts CHANGED
@@ -55,8 +55,7 @@ export interface FormElementProps<TValue = undefined> extends FormElementSettabl
55
55
  /**
56
56
  * Properties of a Form Element that can be read via the component's properties.
57
57
  */
58
- interface FormElementGettableProps extends Pick<defs.Element, "accessibleDescription" | "autoActivate" | "checked" | "collapsed" | "current" | "customType" | "delay" | "description" | "error" | "fileTypes" | "format" | "itemLabel" | "items" | "label" | "manualEntry" | "maxLength" | "minLength" | "orientation" | "prompt" | "readOnly" | "require" | "scanType" | "selectionMode" | "showFilter" | "showMinMaxLabels" | "showTickMarks" | "size" | "source" | "state" | "title" | "tooltip" | "type" | "wrap"> {
59
- }
58
+ declare type FormElementGettableProps = Pick<defs.Element, "accessibleDescription" | "autoActivate" | "checked" | "collapsed" | "current" | "customType" | "delay" | "description" | "error" | "fileTypes" | "format" | "itemLabel" | "items" | "label" | "manualEntry" | "maxLength" | "minLength" | "orientation" | "prompt" | "readOnly" | "require" | "scanType" | "selectionMode" | "showFilter" | "showMinMaxLabels" | "showTickMarks" | "size" | "source" | "state" | "title" | "tooltip" | "type" | "wrap">;
60
59
  /**
61
60
  * Properties of a Form Element that can be set using `SetProperty()`.
62
61
  * Any properties defined here can also be read via the component's properties.
@@ -70,8 +69,7 @@ export interface FormElementSettableProps<TValue = undefined> extends Pick<defs.
70
69
  export interface FormElementItemProps extends FormElementItemSettableProps, Pick<defs.Item, "default" | "enabled" | "index" | "label" | "styleName" | "tooltip" | "validates" | "value" | "visible"> {
71
70
  }
72
71
  /** @public */
73
- export interface FormElementItemSettableProps extends Pick<defs.Item, "checked"> {
74
- }
72
+ declare type FormElementItemSettableProps = Pick<defs.Item, "checked">;
75
73
  type SettablePropsFromProps<TProps extends FormElementProps> = Omit<TProps, keyof FormElementProps> & FormElementSettableProps<TProps["value"]>;
76
74
  type Unionize<T> = T[keyof T];
77
75
  /** @public */
@@ -1 +1 @@
1
- import{customFormatNumber}from"./customNumberFormat.js";var NumberDisplayFormat;!function(r){r.NUMBER="n",r.FIXED_POINT="f",r.CURRENCY="c",r.ACCOUNTING="a",r.PERCENT="p",r.ROUND_TRIP="r",r.CUSTOM="custom"}(NumberDisplayFormat=NumberDisplayFormat||{});const DEFAULT_CURRENCY="USD",DEFAULT_CUSTOM_FORMAT="#.##",DEFAULT_FRACTIONAL_DIGITS=4,SUPPORTED_CURRENCIES=["ADP","AED","AFA","AFN","ALK","ALL","AMD","ANG","AOA","AOK","AON","AOR","ARA","ARL","ARM","ARP","ARS","ATS","AUD","AWG","AZM","AZN","BAD","BAM","BAN","BBD","BDT","BEC","BEF","BEL","BGL","BGM","BGN","BGO","BHD","BIF","BMD","BND","BOB","BOL","BOP","BOV","BRB","BRC","BRE","BRL","BRN","BRR","BRZ","BSD","BTN","BUK","BWP","BYB","BYN","BYR","BZD","CAD","CDF","CHE","CHF","CHW","CLE","CLF","CLP","CNH","CNX","CNY","COP","COU","CRC","CSD","CSK","CUC","CUP","CVE","CYP","CZK","DDM","DEM","DJF","DKK","DOP","DZD","ECS","ECV","EEK","EGP","ERN","ESA","ESB","ESP","ETB","EUR","FIM","FJD","FKP","FRF","GBP","GEK","GEL","GHC","GHS","GIP","GMD","GNF","GNS","GQE","GRD","GTQ","GWE","GWP","GYD","HKD","HNL","HRD","HRK","HTG","HUF","IDR","IEP","ILP","ILR","ILS","INR","IQD","IRR","ISJ","ISK","ITL","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRH","KRO","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LTL","LTT","LUC","LUF","LUL","LVL","LVR","LYD","MAD","MAF","MCF","MDC","MDL","MGA","MGF","MKD","MKN","MLF","MMK","MNT","MOP","MRO","MRU","MTL","MTP","MUR","MVP","MVR","MWK","MXN","MXP","MXV","MYR","MZE","MZM","MZN","NAD","NGN","NIC","NIO","NLG","NOK","NPR","NZD","OMR","PAB","PEI","PEN","PES","PGK","PHP","PKR","PLN","PLZ","PTE","PYG","QAR","RHD","ROL","RON","RSD","RUB","RUR","RWF","SAR","SBD","SCR","SDD","SDG","SDP","SEK","SGD","SHP","SIT","SKK","SLL","SOS","SRD","SRG","SSP","STD","STN","SUR","SVC","SYP","SZL","THB","TJR","TJS","TMM","TMT","TND","TOP","TPE","TRL","TRY","TTD","TWD","TZS","UAH","UAK","UGS","UGX","USD","USN","USS","UYI","UYP","UYU","UYW","UZS","VEB","VEF","VES","VND","VNN","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XEU","XFO","XFU","XOF","XPD","XPF","XPT","XRE","XSU","XTS","XUA","XXX","YDD","YER","YUD","YUM","YUN","YUR","ZAL","ZAR","ZMK","ZMW","ZRN","ZRZ","ZWD","ZWL","ZWR"];function format(r,D){if(null==D||isNaN(D))return"";let t=r.format||NumberDisplayFormat.NUMBER;if(t===NumberDisplayFormat.CUSTOM&&(t=r.customDisplayFormat||DEFAULT_CUSTOM_FORMAT),t===NumberDisplayFormat.ROUND_TRIP)return D.toString();var R,N=t.toLowerCase();N===NumberDisplayFormat.CURRENCY||N===NumberDisplayFormat.ACCOUNTING?(R=r.currency||DEFAULT_CURRENCY,t=N,t+=r.fractionalDigits??"",t+=R?`$${R}`:""):N!==NumberDisplayFormat.NUMBER&&N!==NumberDisplayFormat.FIXED_POINT&&N!==NumberDisplayFormat.PERCENT||(t=N,t+=r.fractionalDigits??"");var N=r["locale"],r=`${N}|${t}`;let a=numberFormatters.get(r);return a||(a=createNumberFormatter(N,t),numberFormatters.set(r,a)),a(D)}function createNumberFormatter(D,t){const R={};let N=t.match(standardFormatPattern);if(N){var a=N[1].toLowerCase(),m=Math.min(20,parseInt(N[2]));let r=N[3];a===NumberDisplayFormat.CURRENCY||a===NumberDisplayFormat.ACCOUNTING?r=(r||DEFAULT_CURRENCY).toUpperCase():(r="",void 0===R.minimumFractionDigits&&(R.minimumFractionDigits=0),void 0===R.maximumFractionDigits&&(R.maximumFractionDigits=Math.max(DEFAULT_FRACTIONAL_DIGITS,R.minimumFractionDigits))),a===NumberDisplayFormat.PERCENT?R.style="percent":a===NumberDisplayFormat.ACCOUNTING?R.currencySign="accounting":a===NumberDisplayFormat.FIXED_POINT&&(R.useGrouping=!1),isNaN(m)||(R.minimumFractionDigits=m,R.maximumFractionDigits=m);const F=r?new Intl.NumberFormat(D,{style:"currency",currency:r,...R}):new Intl.NumberFormat(D,R);return r=>F.format(r)}return r=>customFormatNumber(r,t,D)}const numberFormatters=new Map,standardFormatPattern=/^([acfnp])(\d*)(?:\$([a-zA-Z]{3}))?$/i;export{NumberDisplayFormat,DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,DEFAULT_FRACTIONAL_DIGITS,SUPPORTED_CURRENCIES,format};
1
+ import{customFormatNumber}from"./customNumberFormat.js";var NumberDisplayFormat;!function(r){r.NUMBER="n",r.FIXED_POINT="f",r.CURRENCY="c",r.ACCOUNTING="a",r.PERCENT="p",r.ROUND_TRIP="r",r.CUSTOM="custom"}(NumberDisplayFormat=NumberDisplayFormat||{});const DEFAULT_CURRENCY="USD",DEFAULT_CUSTOM_FORMAT="#.##",DEFAULT_FRACTIONAL_DIGITS=4,SUPPORTED_CURRENCIES=["ADP","AED","AFA","AFN","ALK","ALL","AMD","ANG","AOA","AOK","AON","AOR","ARA","ARL","ARM","ARP","ARS","ATS","AUD","AWG","AZM","AZN","BAD","BAM","BAN","BBD","BDT","BEC","BEF","BEL","BGL","BGM","BGN","BGO","BHD","BIF","BMD","BND","BOB","BOL","BOP","BOV","BRB","BRC","BRE","BRL","BRN","BRR","BRZ","BSD","BTN","BUK","BWP","BYB","BYN","BYR","BZD","CAD","CDF","CHE","CHF","CHW","CLE","CLF","CLP","CNH","CNX","CNY","COP","COU","CRC","CSD","CSK","CUC","CUP","CVE","CYP","CZK","DDM","DEM","DJF","DKK","DOP","DZD","ECS","ECV","EEK","EGP","ERN","ESA","ESB","ESP","ETB","EUR","FIM","FJD","FKP","FRF","GBP","GEK","GEL","GHC","GHS","GIP","GMD","GNF","GNS","GQE","GRD","GTQ","GWE","GWP","GYD","HKD","HNL","HRD","HRK","HTG","HUF","IDR","IEP","ILP","ILR","ILS","INR","IQD","IRR","ISJ","ISK","ITL","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRH","KRO","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LTL","LTT","LUC","LUF","LUL","LVL","LVR","LYD","MAD","MAF","MCF","MDC","MDL","MGA","MGF","MKD","MKN","MLF","MMK","MNT","MOP","MRO","MRU","MTL","MTP","MUR","MVP","MVR","MWK","MXN","MXP","MXV","MYR","MZE","MZM","MZN","NAD","NGN","NIC","NIO","NLG","NOK","NPR","NZD","OMR","PAB","PEI","PEN","PES","PGK","PHP","PKR","PLN","PLZ","PTE","PYG","QAR","RHD","ROL","RON","RSD","RUB","RUR","RWF","SAR","SBD","SCR","SDD","SDG","SDP","SEK","SGD","SHP","SIT","SKK","SLL","SOS","SRD","SRG","SSP","STD","STN","SUR","SVC","SYP","SZL","THB","TJR","TJS","TMM","TMT","TND","TOP","TPE","TRL","TRY","TTD","TWD","TZS","UAH","UAK","UGS","UGX","USD","USN","USS","UYI","UYP","UYU","UYW","UZS","VEB","VEF","VES","VND","VNN","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XEU","XFO","XFU","XOF","XPD","XPF","XPT","XRE","XSU","XTS","XUA","XXX","YDD","YER","YUD","YUM","YUN","YUR","ZAL","ZAR","ZMK","ZMW","ZRN","ZRZ","ZWD","ZWL","ZWR"];function format(r,D){if(null==D||isNaN(D))return"";let t=r.format||NumberDisplayFormat.NUMBER;if(t===NumberDisplayFormat.CUSTOM&&(t=r.customDisplayFormat||DEFAULT_CUSTOM_FORMAT),t===NumberDisplayFormat.ROUND_TRIP)return D.toString();var R,N=t.toLowerCase();N===NumberDisplayFormat.CURRENCY||N===NumberDisplayFormat.ACCOUNTING?(R=r.currency||DEFAULT_CURRENCY,t=N,t+=r.fractionalDigits??"",t+=R?`$${R}`:""):N!==NumberDisplayFormat.NUMBER&&N!==NumberDisplayFormat.FIXED_POINT&&N!==NumberDisplayFormat.PERCENT||(t=N,t+=r.fractionalDigits??"");var N=r["locale"],r=`${N}|${t}`;let a=numberFormatters.get(r);return a||(a=createNumberFormatter(N,t),numberFormatters.set(r,a)),a(D)}function createNumberFormatter(D,t){const R={},N=t.match(standardFormatPattern);if(N){var a=N[1].toLowerCase(),m=Math.min(20,parseInt(N[2]));let r=N[3];a===NumberDisplayFormat.CURRENCY||a===NumberDisplayFormat.ACCOUNTING?r=(r||DEFAULT_CURRENCY).toUpperCase():(r="",void 0===R.minimumFractionDigits&&(R.minimumFractionDigits=0),void 0===R.maximumFractionDigits&&(R.maximumFractionDigits=Math.max(DEFAULT_FRACTIONAL_DIGITS,R.minimumFractionDigits))),a===NumberDisplayFormat.PERCENT?R.style="percent":a===NumberDisplayFormat.ACCOUNTING?R.currencySign="accounting":a===NumberDisplayFormat.FIXED_POINT&&(R.useGrouping=!1),isNaN(m)||(R.minimumFractionDigits=m,R.maximumFractionDigits=m);const F=r?new Intl.NumberFormat(D,{style:"currency",currency:r,...R}):new Intl.NumberFormat(D,R);return r=>F.format(r)}return r=>customFormatNumber(r,t,D)}const numberFormatters=new Map,standardFormatPattern=/^([acfnp])(\d*)(?:\$([a-zA-Z]{3}))?$/i;export{NumberDisplayFormat,DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,DEFAULT_FRACTIONAL_DIGITS,SUPPORTED_CURRENCIES,format};
@@ -1 +1 @@
1
- import{format}from"./numberFormatter.js";import{isNumberRef,isNumeric}from"./utils.js";const defaultNumberFormatConfiguration={lowerBound:{default:0},precision:{default:3,minimum:-20,maximum:20},step:{default:1},upperBound:{default:100}};function getNumberConstraints(e,r){var{lowerBound:i,upperBound:t}=e=e||{};let{precision:n,step:o}=e;var u,r=getNumberFormatConfiguration(r);let a=isNumeric(i)?i:r.lowerBound.default,m=isNumeric(t)?t:r.upperBound.default;return void 0!==m&&void 0!==a&&m<=a&&(a=r.lowerBound.default,m=r.upperBound.default),n="number"!=typeof n||Number.isNaN(n)?r.precision.default:n,void 0!==r.precision.minimum&&(n=Math.max(n,r.precision.minimum)),void 0!==r.precision.maximum&&(n=Math.min(n,r.precision.maximum)),n<0?(u=Math.pow(10,-1*n),void 0!==o&&o%u==0||(o=u)):(o=isNumeric(o)&&0<o?o:r.step.default,void 0!==m&&void 0!==a&&(o=Math.min(o,m-a),u=preciseDivide(m-a,o),Number.isInteger(u)||(r=countDecimalsInValue(o),m=preciseRound(a+Math.floor(u)*o,r)))),{maximum:m,minimum:a,step:o}}const intlNumberFormat=new Intl.NumberFormat("en-US",{minimumFractionDigits:0,maximumFractionDigits:20,useGrouping:!1});function countDecimalsInValue(e){return Number.isInteger(e)?0:intlNumberFormat.formatToParts(e).filter(e=>"fraction"===e.type).map(e=>e.value).join("").length}function sanitizePrecision(e,r,i){i=getNumberFormatConfiguration(i);void 0===e&&(e=i.precision.default);r=countDecimalsInValue(r);return Math.max(r,e)}function getNumberFormatConfiguration(e){const r={lowerBound:{...defaultNumberFormatConfiguration.lowerBound},precision:{...defaultNumberFormatConfiguration.precision},step:{...defaultNumberFormatConfiguration.step},upperBound:{...defaultNumberFormatConfiguration.upperBound}};if(void 0!==e)for(const i in e)r[i]=Object.assign(r[i]||{},e[i]);return r}function preciseDivide(e,r){var i=countDecimalsInValue(e),t=countDecimalsInValue(r);if(0<i||0<t){t=Math.max(i,t),t=Math.pow(10,t);return e*t/(r*t)}return e/r}function enforceConstraints(e,r){var i,t,{maximum:n,minimum:o,step:r}=r;return void 0!==o?(i=preciseDivide(e-o,r),Number.isInteger(i)||(t=countDecimalsInValue(r),e=preciseRound(o+Math.round(i)*r,t))):void 0!==n&&(i=preciseDivide(n-e,r),Number.isInteger(i)||(t=countDecimalsInValue(r),e=preciseRound(n-Math.round(i)*r,t))),void 0!==o&&e<o&&(e=o),e=void 0!==n&&n<e?n:e}function getNumberSliderValues(e,r,i=!1){let t=[],n=NaN,o=NaN;if("string"==typeof e){const a=e.split("\n").filter(e=>""!==e);e=a.map(e=>(e=>(e=e.trim(),isNumeric(e)?parseFloat(e):NaN))(e))}else"number"==typeof e?n=e:"number"==typeof e?.numeric&&(n=e.numeric);if(Array.isArray(e)&&1<=e.length&&(n=e[0],o=e[1]),void 0===n||isNaN(n)||(n=enforceConstraints(n,r),void 0===o||isNaN(o)?i&&t.push(n):(o=enforceConstraints(o,r),t.push(n,o))),t.sort((e,r)=>e-r),t.length===(i?1:2))return t;var u=r.maximum,e=r.minimum;return i?[enforceConstraints((e+u)/2,r)]:[e,u]}function areValuesEqual(e,r){if(void 0===e&&void 0===r||null===e&&null===r)return!0;var i,t;return!(!isNumberRef(e)||!isNumberRef(r))&&(e.display===r.display&&e.refValueType===r.refValueType&&e.numeric===r.numeric&&(i=e.format,t=r.format,void 0===i&&void 0===t||void 0!==i&&void 0!==t&&(i.currency===t.currency&&i.customDisplayFormat===t.customDisplayFormat&&i.displayFormat===t.displayFormat&&i.lowerBound===t.lowerBound&&i.precision===t.precision&&i.step===t.step&&i.upperBound===t.upperBound)))}function getMarks(r,i,t,e,n,o){if(n&&o){const u=[{value:i,label:format(e,i)}];for(let e=i+t;e<r;e+=t)u.push({value:e});return u.push({value:r,label:format(e,r)}),u}return n&&!o?[{value:i,label:format(e,i)},{value:r,label:format(e,r)}]:o}function preciseRound(e,r){let i=e.toString();return i.includes("e")&&(i=e.toFixed(r)),Number(Math.round(Number(i+`e${r}`))+`e-${r}`)}function getCurrencySymbolInfo(e,r){const i=new Intl.NumberFormat(e,{style:"currency",currency:r,minimumFractionDigits:0,maximumFractionDigits:0,useGrouping:!1}),t=i.formatToParts(0);e=t.filter(e=>"currency"===e.type)[0],r=t.filter(e=>"integer"===e.type)[0];if(e&&r)return{position:t.indexOf(e)<t.indexOf(r)?"start":"end",symbol:e.value}}function getPercentSymbolInfo(e){const r=new Intl.NumberFormat(e,{style:"percent",minimumFractionDigits:0,maximumFractionDigits:0,useGrouping:!1}),i=r.formatToParts(0);var t=i.filter(e=>"percentSign"===e.type)[0],e=i.filter(e=>"integer"===e.type)[0];if(t&&e)return{position:i.indexOf(t)<i.indexOf(e)?"start":"end",symbol:t.value}}export{defaultNumberFormatConfiguration,getNumberConstraints,countDecimalsInValue,sanitizePrecision,getNumberFormatConfiguration,enforceConstraints,getNumberSliderValues,areValuesEqual,getMarks,preciseRound,getCurrencySymbolInfo,getPercentSymbolInfo};
1
+ import{format}from"./numberFormatter.js";import{isNumberRef,isNumeric}from"./utils.js";const defaultNumberFormatConfiguration={lowerBound:{default:0},precision:{default:3,minimum:-20,maximum:20},step:{default:1},upperBound:{default:100}};function getNumberConstraints(e,r){var{lowerBound:i,upperBound:t}=e=e||{};let{precision:n,step:o}=e;var u,r=getNumberFormatConfiguration(r);let a=isNumeric(i)?i:r.lowerBound.default,m=isNumeric(t)?t:r.upperBound.default;return void 0!==m&&void 0!==a&&m<=a&&(a=r.lowerBound.default,m=r.upperBound.default),n="number"!=typeof n||Number.isNaN(n)?r.precision.default:n,void 0!==r.precision.minimum&&(n=Math.max(n,r.precision.minimum)),void 0!==r.precision.maximum&&(n=Math.min(n,r.precision.maximum)),n<0?(u=Math.pow(10,-1*n),void 0!==o&&o%u==0||(o=u)):(o=isNumeric(o)&&0<o?o:r.step.default,void 0!==m&&void 0!==a&&(o=Math.min(o,m-a),u=preciseDivide(m-a,o),Number.isInteger(u)||(r=countDecimalsInValue(o),m=preciseRound(a+Math.floor(u)*o,r)))),{maximum:m,minimum:a,step:o}}const intlNumberFormat=new Intl.NumberFormat("en-US",{minimumFractionDigits:0,maximumFractionDigits:20,useGrouping:!1});function countDecimalsInValue(e){return Number.isInteger(e)?0:intlNumberFormat.formatToParts(e).filter(e=>"fraction"===e.type).map(e=>e.value).join("").length}function sanitizePrecision(e,r,i){i=getNumberFormatConfiguration(i);void 0===e&&(e=i.precision.default);r=countDecimalsInValue(r);return Math.max(r,e)}function getNumberFormatConfiguration(e){const r={lowerBound:{...defaultNumberFormatConfiguration.lowerBound},precision:{...defaultNumberFormatConfiguration.precision},step:{...defaultNumberFormatConfiguration.step},upperBound:{...defaultNumberFormatConfiguration.upperBound}};if(void 0!==e)for(const i in e)r[i]=Object.assign(r[i]||{},e[i]);return r}function preciseDivide(e,r){var i=countDecimalsInValue(e),t=countDecimalsInValue(r);if(0<i||0<t){t=Math.max(i,t),t=Math.pow(10,t);return e*t/(r*t)}return e/r}function enforceConstraints(e,r){var i,t,{maximum:n,minimum:o,step:r}=r;return void 0!==o?(i=preciseDivide(e-o,r),Number.isInteger(i)||(t=countDecimalsInValue(r),e=preciseRound(o+Math.round(i)*r,t))):void 0!==n&&(i=preciseDivide(n-e,r),Number.isInteger(i)||(t=countDecimalsInValue(r),e=preciseRound(n-Math.round(i)*r,t))),void 0!==o&&e<o&&(e=o),e=void 0!==n&&n<e?n:e}function getNumberSliderValues(e,r,i=!1){const t=[];let n=NaN,o=NaN;if("string"==typeof e){const a=e.split("\n").filter(e=>""!==e);e=a.map(e=>(e=>(e=e.trim(),isNumeric(e)?parseFloat(e):NaN))(e))}else"number"==typeof e?n=e:"number"==typeof e?.numeric&&(n=e.numeric);if(Array.isArray(e)&&1<=e.length&&(n=e[0],o=e[1]),void 0===n||isNaN(n)||(n=enforceConstraints(n,r),void 0===o||isNaN(o)?i&&t.push(n):(o=enforceConstraints(o,r),t.push(n,o))),t.sort((e,r)=>e-r),t.length===(i?1:2))return t;var u=r.maximum,e=r.minimum;return i?[enforceConstraints((e+u)/2,r)]:[e,u]}function areValuesEqual(e,r){if(void 0===e&&void 0===r||null===e&&null===r)return!0;var i,t;return!(!isNumberRef(e)||!isNumberRef(r))&&(e.display===r.display&&e.refValueType===r.refValueType&&e.numeric===r.numeric&&(i=e.format,t=r.format,void 0===i&&void 0===t||void 0!==i&&void 0!==t&&(i.currency===t.currency&&i.customDisplayFormat===t.customDisplayFormat&&i.displayFormat===t.displayFormat&&i.lowerBound===t.lowerBound&&i.precision===t.precision&&i.step===t.step&&i.upperBound===t.upperBound)))}function getMarks(r,i,t,e,n,o){if(n&&o){const u=[{value:i,label:format(e,i)}];for(let e=i+t;e<r;e+=t)u.push({value:e});return u.push({value:r,label:format(e,r)}),u}return n&&!o?[{value:i,label:format(e,i)},{value:r,label:format(e,r)}]:o}function preciseRound(e,r){let i=e.toString();return i.includes("e")&&(i=e.toFixed(r)),Number(Math.round(Number(i+`e${r}`))+`e-${r}`)}function getCurrencySymbolInfo(e,r){const i=new Intl.NumberFormat(e,{style:"currency",currency:r,minimumFractionDigits:0,maximumFractionDigits:0,useGrouping:!1}),t=i.formatToParts(0);e=t.filter(e=>"currency"===e.type)[0],r=t.filter(e=>"integer"===e.type)[0];if(e&&r)return{position:t.indexOf(e)<t.indexOf(r)?"start":"end",symbol:e.value}}function getPercentSymbolInfo(e){const r=new Intl.NumberFormat(e,{style:"percent",minimumFractionDigits:0,maximumFractionDigits:0,useGrouping:!1}),i=r.formatToParts(0);var t=i.filter(e=>"percentSign"===e.type)[0],e=i.filter(e=>"integer"===e.type)[0];if(t&&e)return{position:i.indexOf(t)<i.indexOf(e)?"start":"end",symbol:t.value}}export{defaultNumberFormatConfiguration,getNumberConstraints,countDecimalsInValue,sanitizePrecision,getNumberFormatConfiguration,enforceConstraints,getNumberSliderValues,areValuesEqual,getMarks,preciseRound,getCurrencySymbolInfo,getPercentSymbolInfo};
@@ -1,5 +1,5 @@
1
1
  import type { FormPresenterHost } from "./FormComponent";
2
- export declare function refresh(component: {}): void;
2
+ export declare function refresh(component: object): void;
3
3
  /**
4
4
  * Refreshes an element.
5
5
  * @param host The host for the presenter.
@@ -13,9 +13,9 @@ export declare function refreshForm(host: FormPresenterHost, container: Element)
13
13
  */
14
14
  export declare function releaseForm(container: HTMLElement): void;
15
15
  /** Renders a component's visual. */
16
- export declare function render(component: {}): any;
16
+ export declare function render(component: object): any;
17
17
  /**
18
18
  * Renders an element with a placeholder.
19
19
  * @param owner
20
20
  */
21
- export declare function renderNone(component: {}): any;
21
+ export declare function renderNone(component: object): any;
@@ -1 +1 @@
1
- import{markdownToSafeHtml}from"@vertigis/react-ui/utils/markdown";const htmlContent=document.createElement("div"),textContent=document.createElement("div"),textNode=document.createTextNode("");htmlContent.appendChild(textNode);const markdownCharsRegExp=/[\\`*_{}[\]()#+\-.!>~]/g,markdownCodeBlockSpacesRegExp=/^[ ]{4}/gm,markdownCodeBlockTabRegExp=/^[ ]{0,3}[ ]{1}/gm,markdownLineBreakSuffixRegExp=/[ ]{2}$/gm;function escapeTextForMarkdown(t){let e=t.replace(markdownCharsRegExp,"\\$&");return e=e.replace(markdownCodeBlockSpacesRegExp," "),e=e.replace(markdownCodeBlockTabRegExp," "),e=e.replace(markdownLineBreakSuffixRegExp," "),e}function getContent(t){return isMarkdown(t)?t.markdown:isStatus(t)?t.status:t}function hasContent(t){return!!getContent(t)}function isMarkdown(t){return null!=t&&"string"==typeof t.markdown}function isStatus(t){return null!=t&&"string"==typeof t.status}function isInvalidError(t){return isStatus(t)&&"invalid"===t.status}function markdownToText(t){return textContent.innerHTML=markdownToSafeHtml(t),textContent.innerText}function textToHtml(t){return textNode.data=t,htmlContent.innerHTML}export{escapeTextForMarkdown,getContent,hasContent,isMarkdown,isStatus,isInvalidError,markdownToText,textToHtml,markdownToSafeHtml};
1
+ import{markdownToSafeHtml}from"@vertigis/react-ui/utils/markdown";const htmlContent=document.createElement("div"),textContent=document.createElement("div"),textNode=document.createTextNode("");htmlContent.appendChild(textNode);const markdownCharsRegExp=/[\\`*_{}[\]()#+\-.!>~]/g,markdownCodeBlockSpacesRegExp=/^[ ]{4}/gm,markdownCodeBlockTabRegExp=/^[ ]{0,3}[\t]{1}/gm,markdownLineBreakSuffixRegExp=/[ ]{2}$/gm;function escapeTextForMarkdown(t){let e=t.replace(markdownCharsRegExp,"\\$&");return e=e.replace(markdownCodeBlockSpacesRegExp," "),e=e.replace(markdownCodeBlockTabRegExp," "),e=e.replace(markdownLineBreakSuffixRegExp," "),e}function getContent(t){return isMarkdown(t)?t.markdown:isStatus(t)?t.status:t}function hasContent(t){return!!getContent(t)}function isMarkdown(t){return null!=t&&"string"==typeof t.markdown}function isStatus(t){return null!=t&&"string"==typeof t.status}function isInvalidError(t){return isStatus(t)&&"invalid"===t.status}function markdownToText(t){return textContent.innerHTML=markdownToSafeHtml(t),textContent.innerText}function textToHtml(t){return textNode.data=t,htmlContent.innerHTML}export{escapeTextForMarkdown,getContent,hasContent,isMarkdown,isStatus,isInvalidError,markdownToText,textToHtml,markdownToSafeHtml};
package/forms/utils.js CHANGED
@@ -1 +1 @@
1
- import{MuiPickersAdapterContext}from"@vertigis/react-ui/LocalizationProvider";import{useContext}from"react";import{FormElementTypes}from"./constants.js";import*as text from"./textUtilities.js";const DEFAULT_DEBOUNCE_DELAY=300,DEFAULT_THROTTLE_DELAY=100;let next=0,seed=(new Date).valueOf();const guid="5DDC9A38-AAAB-44C1-AD87-415160F43D75";function makeId(){return 2147483648<=next&&(seed=(new Date).valueOf(),next=0),`${guid}:${seed}:${next++}`}function indexOf(e,t){if(null!=e){e=e.index;return"number"==typeof e?e:t}}function compareIndex(e,t){return compareNumber(e.index,t.index)}function compareNumber(e,t){return e<t?-1:t<e?1:0}function sortAndFilter(e,t){void 0===t&&(t=indexOf);const i={};if("object"!=typeof e||null===e)return i;let n=0;const r=[];for(const c in e){var o=e[c],s=t(o,n++);"number"==typeof s&&r.push({key:c,index:s,item:o})}for(const a of r.sort(compareIndex))i[a.key]=a.item;return i}function inspectItems(e,t,i){let n;var r=sortAndFilter(t,function(e,t){if(null!=e&&!1!==e.visible){e=e.index;return"number"==typeof e?e:t}});if(void 0===(e=null==e||void 0===r[e]?void 0:e)&&null!=i)for(const o in r){if(r[o].value===i){e=o;break}e=void 0}return i=void 0!==e?(n=r[e].label,r[e].value):n=void 0,{current:e,items:r,label:n,value:i}}function makeSafeClassName(e){return`gcx-forms-${e?.replace(/[\W]/g,"")||"element"}`}let idSuffix=0;function makeUniqueId(e){return`${makeSafeClassName(e)}-${++idSuffix}`}function addSuffix(e,t){return`${e}-${t}`}function getAccessibleDescriptionId(e){return addSuffix(e,"accessible-description")}function getDescriptionId(e){return addSuffix(e,"description")}function getInputId(e){return addSuffix(e,"input")}function getLabelId(e){return addSuffix(e,"label")}function isObjectType(e,t){return"object"==typeof e&&null!==e&&(!Array.isArray(e)&&e.refValueType===t)}function isSection(e){return e?.type===FormElementTypes.SECTION}function isAccordionSection(e){return isSection(e)&&"accordion-section"===e.format}function isCollapsibleSection(e){return isSection(e)&&"collapsible-section"===e.format}function isFieldsetSection(e){return isSection(e)&&"fieldset-section"===e.format}function isMutuallyExclusiveSection(e){return isAccordionSection(e)||isTabSection(e)}function isTabSection(e){return isSection(e)&&"tab-section"===e.format}function isNumber(e){return"number"==typeof e}function isString(e){return"string"==typeof e}function isDataRef(e){return isObjectType(e,"data")}function isDateRangeRef(e){return isObjectType(e,"daterange")}function isDateTimeRef(e){return isObjectType(e,"date")||isObjectType(e,"time")||isObjectType(e,"datetime")}function isFilesRef(e){return isObjectType(e,"files")}function isScanRef(e){return isObjectType(e,"scan")}function isGeometryRef(e){return isObjectType(e,"geometry")}function isItemsRef(e){return isObjectType(e,"items")}function isNumberRef(e){return isObjectType(e,"number")}function sanitizeGeometryRef(e){if(isGeometryRef(e)){var t=e.geometry;if(Array.isArray(t)&&0<t.length)switch(e.format){case"circle":case"extent":case"line":case"multipoint":case"point":case"polygon":case"polygon-freehand":case"polyline":case"polyline-freehand":return e}}}function createGeometryRef(e){return{refValueType:"geometry",format:e,geometry:[]}}function debounce(t,i=DEFAULT_DEBOUNCE_DELAY){let n;return function(){const e=()=>{n=void 0,t.apply(this,arguments)};return clearTimeout(n),n=setTimeout(e,i),{now:()=>{n&&(clearTimeout(n),e())},cancel:()=>{n&&(clearTimeout(n),n=void 0)}}}}function throttle(i,n=DEFAULT_THROTTLE_DELAY){let r,o;return function(){var e=Date.now(),t=()=>{o=void 0,r=Date.now(),i.apply(this,arguments)};r&&e<r+n?(clearTimeout(o),o=setTimeout(t,n)):t()}}function isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}function getElementProps(e,t){var{enabled:i,id:n,raiseEvent:r,setItemProperty:o,setProperty:s,setValue:c}=e,{format:a,manualEntry:u,showMinMaxLabels:f,showTickMarks:l,size:m,type:d,value:p,wrap:y}=t;return{...t,enabled:!!i,id:n,raiseEvent:r,setItemProperty:o,setProperty:s,setValue:c,format:a,manualEntry:u,showMinMaxLabels:f,showTickMarks:l,size:m,type:d,value:p,wrap:y,element:t,name:e.props.name,component:e}}function getItemId(e,t){if(e)for(const i in t)if(t[i]===e)return i}function useLocale(){var e=useContext(MuiPickersAdapterContext)?.utils?.locale?.code;if(!e)throw new Error("Failed to detect locale. Ensure there is a LocalizationProvider in the ancestry of the component that is using this hook.");return e}export{text,makeId,sortAndFilter,inspectItems,makeSafeClassName,makeUniqueId,getAccessibleDescriptionId,getDescriptionId,getInputId,getLabelId,isSection,isAccordionSection,isCollapsibleSection,isFieldsetSection,isMutuallyExclusiveSection,isTabSection,isNumber,isString,isDataRef,isDateRangeRef,isDateTimeRef,isFilesRef,isScanRef,isGeometryRef,isItemsRef,isNumberRef,sanitizeGeometryRef,createGeometryRef,debounce,throttle,isNumeric,getElementProps,getItemId,useLocale};
1
+ import{MuiPickersAdapterContext}from"@vertigis/react-ui/LocalizationProvider";import{useContext}from"react";import{FormElementTypes}from"./constants.js";import*as text from"./textUtilities.js";const DEFAULT_DEBOUNCE_DELAY=300,DEFAULT_THROTTLE_DELAY=100;let next=0,seed=(new Date).valueOf();const guid="5DDC9A38-AAAB-44C1-AD87-415160F43D75";function makeId(){return 2147483648<=next&&(seed=(new Date).valueOf(),next=0),`${guid}:${seed}:${next++}`}function indexOf(e,t){if(null!=e){e=e.index;return"number"==typeof e?e:t}}function compareIndex(e,t){return compareNumber(e.index,t.index)}function compareNumber(e,t){return e<t?-1:t<e?1:0}function sortAndFilter(e,t){void 0===t&&(t=indexOf);const i={};if("object"!=typeof e||null===e)return i;let n=0;const r=[];for(const c in e){var o=e[c],s=t(o,n++);"number"==typeof s&&r.push({key:c,index:s,item:o})}for(const a of r.sort(compareIndex))i[a.key]=a.item;return i}function inspectItems(e,t,i){let n;var r=sortAndFilter(t,function(e,t){if(null!=e&&!1!==e.visible){e=e.index;return"number"==typeof e?e:t}});if(void 0===(e=null==e||void 0===r[e]?void 0:e)&&null!=i)for(const o in r){if(r[o].value===i){e=o;break}e=void 0}return i=void 0!==e?(n=r[e].label,r[e].value):n=void 0,{current:e,items:r,label:n,value:i}}function makeSafeClassName(e){return`gcx-forms-${e?.replace(/[\W]/g,"")||"element"}`}let idSuffix=0;function makeUniqueId(e){return`${makeSafeClassName(e)}-${++idSuffix}`}function addSuffix(e,t){return`${e}-${t}`}function getAccessibleDescriptionId(e){return addSuffix(e,"accessible-description")}function getDescriptionId(e){return addSuffix(e,"description")}function getInputId(e){return addSuffix(e,"input")}function getLabelId(e){return addSuffix(e,"label")}function isObjectType(e,t){return"object"==typeof e&&null!==e&&(!Array.isArray(e)&&e.refValueType===t)}function isSection(e){return e?.type===FormElementTypes.SECTION}function isAccordionSection(e){return isSection(e)&&"accordion-section"===e.format}function isCollapsibleSection(e){return isSection(e)&&"collapsible-section"===e.format}function isFieldsetSection(e){return isSection(e)&&"fieldset-section"===e.format}function isMutuallyExclusiveSection(e){return isAccordionSection(e)||isTabSection(e)}function isTabSection(e){return isSection(e)&&"tab-section"===e.format}function isNumber(e){return"number"==typeof e}function isString(e){return"string"==typeof e}function isDataRef(e){return isObjectType(e,"data")}function isDateRangeRef(e){return isObjectType(e,"daterange")}function isDateTimeRef(e){return isObjectType(e,"date")||isObjectType(e,"time")||isObjectType(e,"datetime")}function isFilesRef(e){return isObjectType(e,"files")}function isScanRef(e){return isObjectType(e,"scan")}function isGeometryRef(e){return isObjectType(e,"geometry")}function isItemsRef(e){return isObjectType(e,"items")}function isNumberRef(e){return isObjectType(e,"number")}function sanitizeGeometryRef(e){if(isGeometryRef(e)){var t=e.geometry;if(Array.isArray(t)&&0<t.length)switch(e.format){case"circle":case"extent":case"line":case"multipoint":case"point":case"polygon":case"polygon-freehand":case"polyline":case"polyline-freehand":return e}}}function createGeometryRef(e){return{refValueType:"geometry",format:e,geometry:[]}}function debounce(t,i=DEFAULT_DEBOUNCE_DELAY){let n;return function(){const e=(...e)=>{n=void 0,t.apply(this,e)};return clearTimeout(n),n=setTimeout(e,i),{now:()=>{n&&(clearTimeout(n),e())},cancel:()=>{n&&(clearTimeout(n),n=void 0)}}}}function throttle(i,n=DEFAULT_THROTTLE_DELAY){let r,o;return function(){var e=Date.now(),t=(...e)=>{o=void 0,r=Date.now(),i.apply(this,e)};r&&e<r+n?(clearTimeout(o),o=setTimeout(t,n)):t()}}function isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}function getElementProps(e,t){var{enabled:i,id:n,raiseEvent:r,setItemProperty:o,setProperty:s,setValue:c}=e,{format:a,manualEntry:u,showMinMaxLabels:f,showTickMarks:l,size:m,type:d,value:p,wrap:y}=t;return{...t,enabled:!!i,id:n,raiseEvent:r,setItemProperty:o,setProperty:s,setValue:c,format:a,manualEntry:u,showMinMaxLabels:f,showTickMarks:l,size:m,type:d,value:p,wrap:y,element:t,name:e.props.name,component:e}}function getItemId(e,t){if(e)for(const i in t)if(t[i]===e)return i}function useLocale(){var e=useContext(MuiPickersAdapterContext)?.utils?.locale?.code;if(!e)throw new Error("Failed to detect locale. Ensure there is a LocalizationProvider in the ancestry of the component that is using this hook.");return e}export{text,makeId,sortAndFilter,inspectItems,makeSafeClassName,makeUniqueId,getAccessibleDescriptionId,getDescriptionId,getInputId,getLabelId,isSection,isAccordionSection,isCollapsibleSection,isFieldsetSection,isMutuallyExclusiveSection,isTabSection,isNumber,isString,isDataRef,isDateRangeRef,isDateTimeRef,isFilesRef,isScanRef,isGeometryRef,isItemsRef,isNumberRef,sanitizeGeometryRef,createGeometryRef,debounce,throttle,isNumeric,getElementProps,getItemId,useLocale};
package/libs/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "5.44.0+33";
1
+ export declare const VERSION = "5.45.0+30";
package/libs/version.js CHANGED
@@ -1 +1 @@
1
- const VERSION="5.44.0+33";export{VERSION};
1
+ const VERSION="5.45.0+30";export{VERSION};
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@vertigis/workflow",
3
- "version": "5.44.0",
3
+ "version": "5.45.0",
4
4
  "author": "VertiGIS",
5
5
  "dependencies": {
6
6
  "@date-fns/utc": "^1.2.0",
7
+ "@esri/arcgis-html-sanitizer": "^4.0.3",
7
8
  "@zxing/browser": "0.1.5",
8
9
  "@zxing/library": "0.21.3",
9
10
  "autosuggest-highlight": "^3.3.4",
@@ -24,8 +25,7 @@
24
25
  "@types/react": "18.2.46",
25
26
  "@types/react-dom": "18.2.18",
26
27
  "@vertigis/licensing": "5.1.1",
27
- "@vertigis/react-ui": "16.6.2",
28
- "cross-env": "7.0.3",
28
+ "@vertigis/react-ui": "19.0.2",
29
29
  "cross-fetch": "^4.1.0",
30
30
  "jest": "^29.7.0",
31
31
  "jest-environment-jsdom": "^29.7.0",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@arcgis/core": ">= 4.31.0 < 5.0.0",
42
- "@vertigis/react-ui": ">= 16.3.1-0 < 17.0.0-0",
42
+ "@vertigis/react-ui": ">= 19.0.2-0 < 20.0.0-0",
43
43
  "react": ">= 18 < 19",
44
44
  "react-dom": ">= 18 < 19"
45
45
  },
@@ -51,8 +51,9 @@
51
51
  "license": "SEE LICENSE IN LICENSE",
52
52
  "scripts": {
53
53
  "compile-tests": "tsc -p ./tsconfig.tests.json",
54
- "test": "yarn compile-tests && cross-env TZ=\"America/Los_Angeles\" jest",
55
- "test-coverage": "yarn compile-tests && cross-env TZ=\"America/Los_Angeles\" jest --coverage",
56
- "test-watch": "yarn compile-tests && cross-env TZ=\"America/Los_Angeles\" jest --watch"
54
+ "test": "yarn compile-tests && jest",
55
+ "test-de": "yarn compile-tests && jest --config=./jest.config.de.js",
56
+ "test-coverage": "yarn compile-tests && jest --coverage && yarn test-de formatDate",
57
+ "test-watch": "yarn compile-tests && jest --watch"
57
58
  }
58
59
  }