@corva/ui 3.78.0-13 → 3.78.0-15

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 (28) hide show
  1. package/cjs-bundle/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
  2. package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js +1 -1
  3. package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
  4. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
  5. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
  6. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  7. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  8. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  9. package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
  10. package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
  11. package/components/AssetsMultipleSelector/AssetsMultipleSelector.d.ts.map +1 -1
  12. package/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
  13. package/componentsV2/ColorPicker/ColorPicker.d.ts +3 -0
  14. package/componentsV2/ColorPicker/ColorPicker.d.ts.map +1 -1
  15. package/componentsV2/ColorPicker/ColorPicker.js +1 -1
  16. package/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
  17. package/componentsV2/DatePicker/DatePickerNext.stories.d.ts.map +1 -1
  18. package/componentsV2/DatePicker/Input/Input.js +1 -1
  19. package/componentsV2/DatePicker/Input/Input.js.map +1 -1
  20. package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
  21. package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  22. package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  23. package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  24. package/componentsV2/DatePicker/utils.js +1 -1
  25. package/componentsV2/DatePicker/utils.js.map +1 -1
  26. package/mcp-server/server.mjs +2 -2
  27. package/package.json +1 -1
  28. package/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t={date:"MMM DD YYYY",dateTime:"MMM DD YYYY hh:mm A",month:"MMMM YYYY"},e={date:"MM/DD/YYYY",dateTime:"MM/DD/YYYY hh:mm A",month:"MMM YYYY"},l=["D","M","Y","h","m","s","S"],n=[].concat(l,["A"]),i=new RegExp("^([^".concat(n.join(""),"]+)"),"gi"),r={month:"MM/YYYY",date:"MM/DD/YYYY",dateTime:"MM/DD/YYYY hh:mm A"},o={month:[r.month,"MMMM YYYY","MMM YYYY"],date:[r.date,"M/D/YYYY"],dateTime:[r.dateTime,"M/D/YYYY hh:mm A"]},u=function(t,e){return!!t&&!!e&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()};exports.DefaultFormatByType=t,exports.DefaultFormatByTypeRange=e,exports.InputAutocompleteFormats=r,exports.InputParseFormats=o,exports.MonthOptions=[{id:1,title:"Jan",fullTitle:"January"},{id:2,title:"Feb",fullTitle:"February"},{id:3,title:"Mar",fullTitle:"March"},{id:4,title:"Apr",fullTitle:"April"},{id:5,title:"May",fullTitle:"May"},{id:6,title:"Jun",fullTitle:"June"},{id:7,title:"Jul",fullTitle:"July"},{id:8,title:"Aug",fullTitle:"August"},{id:9,title:"Sep",fullTitle:"September"},{id:10,title:"Oct",fullTitle:"October"},{id:11,title:"Nov",fullTitle:"November"},{id:12,title:"Dec",fullTitle:"December"}],exports.autocompleteValue=function(t){var e=t.value,n=t.type,o=t.range,u=t.prevValue,a=r[n],Y=o?"".concat(a," - ").concat(a):a,M=e.toLocaleLowerCase().replace(/([ap])m/gi,"$1");if(e.length<=u.length||!function(t,e){return e.length<=t.length&&e.split("").every((function(e,n){var i,r=t[n];if(l.includes(r))return null==(i=e)?void 0:i.match(/\d/);if("A"===r){var o=e.toLocaleLowerCase();return"a"===o||"p"===o}return r===e}))}(Y,M)||Y.length<=M.length)return e;var c=function(t,e){var l;return(null===(l=t.substring(e).match(i))||void 0===l?void 0:l[0])||""}(Y,M.length);return"".concat(e).concat(c)},exports.getDateWithSameTime=function(t,e){return new Date(t.getFullYear(),t.getMonth(),t.getDate(),(null==e?void 0:e.getHours())||0,(null==e?void 0:e.getMinutes())||0,(null==e?void 0:e.getSeconds())||0)},exports.getDefaultFormat=function(l,n){return(n?e:t)[l]},exports.getMaxDate=function(t,e){return t&&e?t>e?t:e:t||e},exports.getMinDate=function(t,e){return t&&e?t<e?t:e:t||e},exports.isSameDay=function(t,e){return u(t,e)&&(null==t?void 0:t.getDate())===(null==e?void 0:e.getDate())},exports.isSameMonth=u;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t={date:"MMM DD YYYY",dateTime:"MMM DD YYYY HH:mm",month:"MMMM YYYY"},e={date:"MM/DD/YYYY",dateTime:"MM/DD/YYYY HH:mm",month:"MMM YYYY"},l=["D","M","Y","h","m","s","S","H"],n=[].concat(l,["A"]),i=new RegExp("^([^".concat(n.join(""),"]+)"),"gi"),r={month:"MM/YYYY",date:"MM/DD/YYYY",dateTime:"MM/DD/YYYY HH:mm"},o={month:[r.month,"MMMM YYYY","MMM YYYY"],date:[r.date,"M/D/YYYY"],dateTime:[r.dateTime,"M/D/YYYY HH:mm"]},u=function(t,e){return!!t&&!!e&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()};exports.DefaultFormatByType=t,exports.DefaultFormatByTypeRange=e,exports.InputAutocompleteFormats=r,exports.InputParseFormats=o,exports.MonthOptions=[{id:1,title:"Jan",fullTitle:"January"},{id:2,title:"Feb",fullTitle:"February"},{id:3,title:"Mar",fullTitle:"March"},{id:4,title:"Apr",fullTitle:"April"},{id:5,title:"May",fullTitle:"May"},{id:6,title:"Jun",fullTitle:"June"},{id:7,title:"Jul",fullTitle:"July"},{id:8,title:"Aug",fullTitle:"August"},{id:9,title:"Sep",fullTitle:"September"},{id:10,title:"Oct",fullTitle:"October"},{id:11,title:"Nov",fullTitle:"November"},{id:12,title:"Dec",fullTitle:"December"}],exports.autocompleteValue=function(t){var e=t.value,n=t.type,o=t.range,u=t.prevValue,a=r[n],Y=o?"".concat(a," - ").concat(a):a,M=e.toLocaleLowerCase().replace(/([ap])m/gi,"$1");if(e.length<=u.length||!function(t,e){return e.length<=t.length&&e.split("").every((function(e,n){var i,r=t[n];if(l.includes(r))return null==(i=e)?void 0:i.match(/\d/);if("A"===r){var o=e.toLocaleLowerCase();return"a"===o||"p"===o}return r===e}))}(Y,M)||Y.length<=M.length)return e;var c=function(t,e){var l;return(null===(l=t.substring(e).match(i))||void 0===l?void 0:l[0])||""}(Y,M.length);return"".concat(e).concat(c)},exports.getDateWithSameTime=function(t,e){return new Date(t.getFullYear(),t.getMonth(),t.getDate(),(null==e?void 0:e.getHours())||0,(null==e?void 0:e.getMinutes())||0,(null==e?void 0:e.getSeconds())||0)},exports.getDefaultFormat=function(l,n){return(n?e:t)[l]},exports.getMaxDate=function(t,e){return t&&e?t>e?t:e:t||e},exports.getMinDate=function(t,e){return t&&e?t<e?t:e:t||e},exports.isSameDay=function(t,e){return u(t,e)&&(null==t?void 0:t.getDate())===(null==e?void 0:e.getDate())},exports.isSameMonth=u;
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/componentsV2/DatePicker/utils.tsx"],"sourcesContent":["export type DatePickerType = 'date' | 'dateTime' | 'month';\n\nexport type DatePickerValue<IsRange extends boolean | undefined = false> = IsRange extends\n | undefined\n | false\n ? Date | undefined\n : [Date, Date] | undefined;\n\nexport type DatePickerChangeHandler<IsRange extends boolean | undefined = false> = (\n value: DatePickerValue<IsRange>\n) => void;\n\n// startDate - initial state, no start date selected\n// endDate - start done, no end date selected\nexport type RangeSelectionStep = 'startDate' | 'endDate';\n\nexport const DefaultFormatByType: Record<DatePickerType, string> = {\n date: 'MMM DD YYYY',\n dateTime: 'MMM DD YYYY hh:mm A',\n month: 'MMMM YYYY',\n};\n\nexport const DefaultFormatByTypeRange: Record<DatePickerType, string> = {\n date: 'MM/DD/YYYY',\n dateTime: 'MM/DD/YYYY hh:mm A',\n month: 'MMM YYYY',\n};\n\nexport const getDefaultFormat = (type: DatePickerType, range?: boolean) => {\n const map = range ? DefaultFormatByTypeRange : DefaultFormatByType;\n return map[type];\n};\n\nconst NumericLetters = ['D', 'M', 'Y', 'h', 'm', 's', 'S'];\nconst AllLetters = [...NumericLetters, 'A'];\nconst GetSeparatorRegex = new RegExp(`^([^${AllLetters.join('')}]+)`, 'gi');\n\n// These formats should be composed only of `AllLetters` as placeholders only\nexport const InputAutocompleteFormats: Record<DatePickerType, string> = {\n month: 'MM/YYYY',\n date: 'MM/DD/YYYY',\n dateTime: 'MM/DD/YYYY hh:mm A',\n};\n\nexport const InputParseFormats: Record<DatePickerType, string[]> = {\n month: [InputAutocompleteFormats.month, 'MMMM YYYY', 'MMM YYYY'],\n date: [InputAutocompleteFormats.date, 'M/D/YYYY'],\n dateTime: [InputAutocompleteFormats.dateTime, 'M/D/YYYY hh:mm A'],\n};\n\nconst isDigit = (symbol?: string) => symbol?.match(/\\d/);\n\nconst isInFormatSoFar = (format: string, value: string) => {\n if (value.length <= format.length) {\n const valueArr = value.split('');\n\n return valueArr.every((valueChar, pos) => {\n const formatChar = format[pos];\n\n if (NumericLetters.includes(formatChar)) {\n return isDigit(valueChar);\n }\n\n if (formatChar === 'A') {\n const lcChar = valueChar.toLocaleLowerCase();\n return lcChar === 'a' || lcChar === 'p';\n }\n\n return formatChar === valueChar;\n });\n }\n\n return false;\n};\n\nconst getSeparator = (format: string, startIndex: number) => {\n return format.substring(startIndex).match(GetSeparatorRegex)?.[0] || '';\n};\n\nexport const autocompleteValue = ({\n value,\n type,\n range,\n prevValue,\n}: {\n type: DatePickerType;\n range?: boolean;\n value: string;\n prevValue: string;\n}) => {\n const formatPart = InputAutocompleteFormats[type];\n const format = range ? `${formatPart} - ${formatPart}` : formatPart;\n\n const preparedValue = value.toLocaleLowerCase().replace(/([ap])m/gi, '$1');\n\n if (\n value.length <= prevValue.length ||\n !isInFormatSoFar(format, preparedValue) ||\n format.length <= preparedValue.length\n ) {\n return value;\n }\n\n // Only autocomplete if user types something\n // Check if conforms to format so far\n // Adding separators if needed\n const separator = getSeparator(format, preparedValue.length);\n\n return `${value}${separator}`;\n};\n\nexport const isSameMonth = (a?: Date, b?: Date) =>\n !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameDay = (a?: Date, b?: Date) => isSameMonth(a, b) && a?.getDate() === b?.getDate();\n\nexport const getMinDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a < b ? a : b;\n }\n\n return a || b;\n};\n\nexport const getMaxDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a > b ? a : b;\n }\n\n return a || b;\n};\n\nexport const MonthOptions = [\n { id: 1, title: 'Jan', fullTitle: 'January' },\n { id: 2, title: 'Feb', fullTitle: 'February' },\n { id: 3, title: 'Mar', fullTitle: 'March' },\n { id: 4, title: 'Apr', fullTitle: 'April' },\n { id: 5, title: 'May', fullTitle: 'May' },\n { id: 6, title: 'Jun', fullTitle: 'June' },\n { id: 7, title: 'Jul', fullTitle: 'July' },\n { id: 8, title: 'Aug', fullTitle: 'August' },\n { id: 9, title: 'Sep', fullTitle: 'September' },\n { id: 10, title: 'Oct', fullTitle: 'October' },\n { id: 11, title: 'Nov', fullTitle: 'November' },\n { id: 12, title: 'Dec', fullTitle: 'December' },\n];\n\nexport type DatePickerCalendarView = 'year' | 'month';\n\nexport const getDateWithSameTime = (date: Date, timeDate?: Date) =>\n new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n timeDate?.getHours() || 0,\n timeDate?.getMinutes() || 0,\n timeDate?.getSeconds() || 0\n );\n"],"names":["DefaultFormatByType","date","dateTime","month","DefaultFormatByTypeRange","NumericLetters","AllLetters","concat","GetSeparatorRegex","RegExp","join","InputAutocompleteFormats","InputParseFormats","isSameMonth","a","b","getFullYear","getMonth","id","title","fullTitle","_ref","value","type","range","prevValue","formatPart","format","preparedValue","toLocaleLowerCase","replace","length","split","every","valueChar","pos","symbol","formatChar","includes","match","lcChar","isInFormatSoFar","separator","startIndex","_format$substring$mat","substring","getSeparator","timeDate","Date","getDate","getHours","getMinutes","getSeconds"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/componentsV2/DatePicker/utils.tsx"],"sourcesContent":["export type DatePickerType = 'date' | 'dateTime' | 'month';\n\nexport type DatePickerValue<IsRange extends boolean | undefined = false> = IsRange extends\n | undefined\n | false\n ? Date | undefined\n : [Date, Date] | undefined;\n\nexport type DatePickerChangeHandler<IsRange extends boolean | undefined = false> = (\n value: DatePickerValue<IsRange>\n) => void;\n\n// startDate - initial state, no start date selected\n// endDate - start done, no end date selected\nexport type RangeSelectionStep = 'startDate' | 'endDate';\n\nexport const DefaultFormatByType: Record<DatePickerType, string> = {\n date: 'MMM DD YYYY',\n dateTime: 'MMM DD YYYY HH:mm',\n month: 'MMMM YYYY',\n};\n\nexport const DefaultFormatByTypeRange: Record<DatePickerType, string> = {\n date: 'MM/DD/YYYY',\n dateTime: 'MM/DD/YYYY HH:mm',\n month: 'MMM YYYY',\n};\n\nexport const getDefaultFormat = (type: DatePickerType, range?: boolean) => {\n const map = range ? DefaultFormatByTypeRange : DefaultFormatByType;\n return map[type];\n};\n\nconst NumericLetters = ['D', 'M', 'Y', 'h', 'm', 's', 'S', 'H'];\nconst AllLetters = [...NumericLetters, 'A'];\nconst GetSeparatorRegex = new RegExp(`^([^${AllLetters.join('')}]+)`, 'gi');\n\n// These formats should be composed only of `AllLetters` as placeholders only\nexport const InputAutocompleteFormats: Record<DatePickerType, string> = {\n month: 'MM/YYYY',\n date: 'MM/DD/YYYY',\n dateTime: 'MM/DD/YYYY HH:mm',\n};\n\nexport const InputParseFormats: Record<DatePickerType, string[]> = {\n month: [InputAutocompleteFormats.month, 'MMMM YYYY', 'MMM YYYY'],\n date: [InputAutocompleteFormats.date, 'M/D/YYYY'],\n dateTime: [InputAutocompleteFormats.dateTime, 'M/D/YYYY HH:mm'],\n};\n\nconst isDigit = (symbol?: string) => symbol?.match(/\\d/);\n\nconst isInFormatSoFar = (format: string, value: string) => {\n if (value.length <= format.length) {\n const valueArr = value.split('');\n\n return valueArr.every((valueChar, pos) => {\n const formatChar = format[pos];\n\n if (NumericLetters.includes(formatChar)) {\n return isDigit(valueChar);\n }\n\n if (formatChar === 'A') {\n const lcChar = valueChar.toLocaleLowerCase();\n return lcChar === 'a' || lcChar === 'p';\n }\n\n return formatChar === valueChar;\n });\n }\n\n return false;\n};\n\nconst getSeparator = (format: string, startIndex: number) => {\n return format.substring(startIndex).match(GetSeparatorRegex)?.[0] || '';\n};\n\nexport const autocompleteValue = ({\n value,\n type,\n range,\n prevValue,\n}: {\n type: DatePickerType;\n range?: boolean;\n value: string;\n prevValue: string;\n}) => {\n const formatPart = InputAutocompleteFormats[type];\n const format = range ? `${formatPart} - ${formatPart}` : formatPart;\n\n const preparedValue = value.toLocaleLowerCase().replace(/([ap])m/gi, '$1');\n\n if (\n value.length <= prevValue.length ||\n !isInFormatSoFar(format, preparedValue) ||\n format.length <= preparedValue.length\n ) {\n return value;\n }\n\n // Only autocomplete if user types something\n // Check if conforms to format so far\n // Adding separators if needed\n const separator = getSeparator(format, preparedValue.length);\n\n return `${value}${separator}`;\n};\n\nexport const isSameMonth = (a?: Date, b?: Date) =>\n !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameDay = (a?: Date, b?: Date) => isSameMonth(a, b) && a?.getDate() === b?.getDate();\n\nexport const getMinDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a < b ? a : b;\n }\n\n return a || b;\n};\n\nexport const getMaxDate = (a?: Date, b?: Date) => {\n if (a && b) {\n return a > b ? a : b;\n }\n\n return a || b;\n};\n\nexport const MonthOptions = [\n { id: 1, title: 'Jan', fullTitle: 'January' },\n { id: 2, title: 'Feb', fullTitle: 'February' },\n { id: 3, title: 'Mar', fullTitle: 'March' },\n { id: 4, title: 'Apr', fullTitle: 'April' },\n { id: 5, title: 'May', fullTitle: 'May' },\n { id: 6, title: 'Jun', fullTitle: 'June' },\n { id: 7, title: 'Jul', fullTitle: 'July' },\n { id: 8, title: 'Aug', fullTitle: 'August' },\n { id: 9, title: 'Sep', fullTitle: 'September' },\n { id: 10, title: 'Oct', fullTitle: 'October' },\n { id: 11, title: 'Nov', fullTitle: 'November' },\n { id: 12, title: 'Dec', fullTitle: 'December' },\n];\n\nexport type DatePickerCalendarView = 'year' | 'month';\n\nexport const getDateWithSameTime = (date: Date, timeDate?: Date) =>\n new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n timeDate?.getHours() || 0,\n timeDate?.getMinutes() || 0,\n timeDate?.getSeconds() || 0\n );\n"],"names":["DefaultFormatByType","date","dateTime","month","DefaultFormatByTypeRange","NumericLetters","AllLetters","concat","GetSeparatorRegex","RegExp","join","InputAutocompleteFormats","InputParseFormats","isSameMonth","a","b","getFullYear","getMonth","id","title","fullTitle","_ref","value","type","range","prevValue","formatPart","format","preparedValue","toLocaleLowerCase","replace","length","split","every","valueChar","pos","symbol","formatChar","includes","match","lcChar","isInFormatSoFar","separator","startIndex","_format$substring$mat","substring","getSeparator","timeDate","Date","getDate","getHours","getMinutes","getSeconds"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsMultipleSelector.d.ts","sourceRoot":"","sources":["../../../src/components/AssetsMultipleSelector/AssetsMultipleSelector.tsx"],"names":[],"mappings":"AAwCA,KAAK,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpE,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7B;;MAEE;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzC;;MAEE;IACF,KAAK,EAAE,MAAM,CAAC;IACd;;MAEE;IACF,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,eAAe,GAAG,KAAK,GAAG,QAAQ,CAAC;IACrF;;MAEE;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;MAEE;IACF,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACnD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC5B,CAAC;IACF;;MAEE;IACF,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,sBAAsB,iIASvB,2BAA2B,6CA0I/B,CAAC;eAEa,sBAAsB"}
1
+ {"version":3,"file":"AssetsMultipleSelector.d.ts","sourceRoot":"","sources":["../../../src/components/AssetsMultipleSelector/AssetsMultipleSelector.tsx"],"names":[],"mappings":"AAwCA,KAAK,KAAK,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpE,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,cAAc,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7B;;MAEE;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzC;;MAEE;IACF,KAAK,EAAE,MAAM,CAAC;IACd;;MAEE;IACF,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,eAAe,GAAG,KAAK,GAAG,QAAQ,CAAC;IACrF;;MAEE;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;MAEE;IACF,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACnD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC5B,CAAC;IACF;;MAEE;IACF,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,sBAAsB,iIASvB,2BAA2B,6CAyI/B,CAAC;eAEa,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsMultipleSelector.js","sources":["../../../src/components/AssetsMultipleSelector/AssetsMultipleSelector.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport classnames from 'classnames';\nimport { makeStyles } from '@material-ui/core';\nimport { sortBy } from 'lodash';\n\nimport { Search } from '../Search';\n\nimport { mapAssetGetRequest } from '~/clients/jsonApi';\nimport { jsonaDataFormatter } from '~/utils';\nimport useLoadedData from '~/effects/useLoadedData';\n\nconst useStyles = makeStyles(theme => ({\n listbox: {\n maxHeight: 360,\n },\n paper: {\n width: 364,\n },\n footer: {\n fontSize: 12,\n color: theme.palette.primary.text6,\n lineHeight: '16.872px',\n padding: '8px 16px',\n },\n}));\n\nconst getDataFromResponseFn = (response: {\n data: unknown;\n headers?: { get(name: string): string | null };\n}) => {\n return {\n data: jsonaDataFormatter.deserialize(response.data as string) as Asset[],\n total: Number(response.headers?.get('total')) || 0,\n };\n};\nconst initialSelectedAssets: Asset[] = [];\nconst defaultQueryParams = {};\nconst DEFAULT_ASSETS_PER_PAGE = 50;\nconst initialData: { data: Asset[]; total: number } = { data: [], total: 0 };\n\ntype Asset = { id: string; name: string } & Record<string, unknown>;\nexport type AssetsMultipleSelectorProps = {\n /**\n array of asset objects with required id and name fields.\n */\n selectedAssets: [] | Asset[];\n /**\n callback fires on asset selection with array of all selected assets.\n */\n onChange: (assets: Asset[] | []) => void;\n /**\n label for autocomplete input.\n */\n label: string;\n /**\n type of asset.\n */\n type: 'program' | 'rig' | 'well' | 'frac_fleet' | 'drillout_unit' | 'pad' | 'assets';\n /**\n css for root component.\n */\n className?: string;\n /**\n custom query params for assets request like fields, per_page.\n */\n customRequestQueryParams?: Record<string, unknown> & {\n fields?: string[];\n per_page?: number | string;\n };\n /**\n material ui autocomplete classes.\n */\n classes?: any;\n};\n\nconst AssetsMultipleSelector = memo(\n ({\n selectedAssets = initialSelectedAssets,\n onChange,\n label,\n className,\n type,\n customRequestQueryParams,\n classes = {},\n }: AssetsMultipleSelectorProps) => {\n const styles = useStyles();\n\n const { isLoading, setIsLoading, data, loadData } = useLoadedData({\n loadFn: mapAssetGetRequest(type, true),\n initialData: initialData as any,\n getDataFromResponseFn,\n isCacheEnabled: true,\n });\n const { data: assetsData, total } = data ?? initialData;\n const [searchValue, setSearchValue] = useState('');\n\n useEffect(() => {\n loadAssets('', customRequestQueryParams);\n }, []);\n\n const selectedOptions: AssetsMultipleSelectorProps['selectedAssets'] & {} = useMemo(\n () =>\n selectedAssets.map(asset => ({\n ...asset,\n id: asset.id,\n label: asset.name,\n })),\n [selectedAssets]\n );\n\n const options: (Asset & { label: string })[] = useMemo(() => {\n const optionsMap: Record<string, Asset & { label: string }> = {};\n const allOptions = selectedOptions.length ? assetsData.concat(selectedOptions) : assetsData;\n allOptions.forEach((asset: Asset) => {\n optionsMap[asset.id] = {\n ...asset,\n id: asset.id,\n label: asset.name,\n };\n });\n\n return Object.values(sortBy(optionsMap, 'label'));\n }, [assetsData, selectedAssets, searchValue]);\n\n const loadAssets = useCallback(\n (\n search: string,\n customRequestQueryParams: AssetsMultipleSelectorProps['customRequestQueryParams'] = {}\n ) => {\n const params = {\n ...defaultQueryParams,\n per_page: DEFAULT_ASSETS_PER_PAGE,\n ...customRequestQueryParams,\n fields: [`${type}.name`].concat(customRequestQueryParams?.fields || []),\n };\n\n loadData({\n search,\n ...params,\n });\n },\n []\n );\n\n const handleChange = (_event: unknown, visibleSelectedOptions: Asset[], reason?: string) => {\n if (reason === 'reset') return;\n\n const newAssets = visibleSelectedOptions.map(option => {\n return {\n ...option,\n name: option.label as string,\n };\n });\n\n onChange(newAssets);\n };\n\n const onInputReset = () => {\n setSearchValue('');\n loadAssets('', customRequestQueryParams);\n };\n\n const handleInputChange = (value: string, reason: string) => {\n if (reason === 'reset' || value === '') {\n onInputReset();\n return;\n }\n\n if (value.trimStart() !== searchValue) {\n setSearchValue(value.trimStart());\n setIsLoading(true);\n loadAssets(value.trimStart(), customRequestQueryParams);\n }\n };\n\n const countNotShowedAssets = () => {\n const optionsCount = total - assetsData?.length;\n if (optionsCount === 0) return null;\n\n return optionsCount;\n };\n\n const paperFooter = useMemo(() => {\n const notShowedAssetsQuantity = countNotShowedAssets();\n return notShowedAssetsQuantity && !isLoading && searchValue ? (\n <div className={styles.footer}>\n {notShowedAssetsQuantity} additional items not displayed. Continue typing for more refined\n results.\n </div>\n ) : null;\n }, [assetsData, isLoading, !!searchValue, total]);\n\n const { listbox, paper, ...restClasses } = classes;\n\n return (\n <Search\n data-testid=\"offsetPadDropdown\"\n value={selectedOptions}\n onChange={handleChange}\n TextFieldProps={{ label }}\n // @ts-ignore\n className={className}\n classes={{\n listbox: classnames(styles.listbox, listbox),\n paper: classnames(styles.paper, paper),\n ...restClasses,\n }}\n loading={isLoading}\n options={options}\n placeholder=\"\"\n multiple\n filterSelectedOptions={false}\n AutocompleteProps={{ forcePopupIcon: true }}\n isHiddenAllOption\n onInputChangeCallback={handleInputChange}\n onInputReset={onInputReset}\n paperFooter={paperFooter}\n getOptionSelected={(option, value) => +option.id === +value.id}\n isPrioritizedSelectedOptions\n />\n );\n }\n);\n\nexport default AssetsMultipleSelector;\n"],"names":["useStyles","makeStyles","theme","listbox","maxHeight","paper","width","footer","fontSize","color","palette","primary","text6","lineHeight","padding","getDataFromResponseFn","response","_response$headers","data","jsonaDataFormatter","deserialize","total","Number","headers","get","initialSelectedAssets","defaultQueryParams","initialData","AssetsMultipleSelector","memo","_ref","_ref$selectedAssets","selectedAssets","onChange","label","className","type","customRequestQueryParams","_ref$classes","classes","styles","_useLoadedData","useLoadedData","loadFn","mapAssetGetRequest","isCacheEnabled","isLoading","setIsLoading","loadData","_ref2","assetsData","useState","_useState2","_slicedToArray","_useState","searchValue","setSearchValue","useEffect","loadAssets","selectedOptions","useMemo","map","asset","_objectSpread","id","name","options","optionsMap","length","concat","forEach","Object","values","sortBy","useCallback","search","arguments","undefined","params","per_page","fields","onInputReset","paperFooter","optionsCount","notShowedAssetsQuantity","_jsxs","children","restClasses","_excluded","_jsx","Search","value","_event","visibleSelectedOptions","reason","newAssets","option","TextFieldProps","classnames","loading","placeholder","multiple","filterSelectedOptions","AutocompleteProps","forcePopupIcon","isHiddenAllOption","onInputChangeCallback","trimStart","getOptionSelected","isPrioritizedSelectedOptions"],"mappings":"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"}
1
+ {"version":3,"file":"AssetsMultipleSelector.js","sources":["../../../src/components/AssetsMultipleSelector/AssetsMultipleSelector.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport classnames from 'classnames';\nimport { makeStyles } from '@material-ui/core';\nimport { sortBy } from 'lodash';\n\nimport { Search } from '../Search';\n\nimport { mapAssetGetRequest } from '~/clients/jsonApi';\nimport { jsonaDataFormatter } from '~/utils';\nimport useLoadedData from '~/effects/useLoadedData';\n\nconst useStyles = makeStyles(theme => ({\n listbox: {\n maxHeight: 360,\n },\n paper: {\n width: 364,\n },\n footer: {\n fontSize: 12,\n color: theme.palette.primary.text6,\n lineHeight: '16.872px',\n padding: '8px 16px',\n },\n}));\n\nconst getDataFromResponseFn = (response: {\n data: unknown;\n headers?: { get(name: string): string | null };\n}) => {\n return {\n data: jsonaDataFormatter.deserialize(response.data as string) as Asset[],\n total: Number(response.headers?.get('total')) || 0,\n };\n};\nconst initialSelectedAssets: Asset[] = [];\nconst defaultQueryParams = {};\nconst DEFAULT_ASSETS_PER_PAGE = 50;\nconst initialData: { data: Asset[]; total: number } = { data: [], total: 0 };\n\ntype Asset = { id: string; name: string } & Record<string, unknown>;\nexport type AssetsMultipleSelectorProps = {\n /**\n array of asset objects with required id and name fields.\n */\n selectedAssets: [] | Asset[];\n /**\n callback fires on asset selection with array of all selected assets.\n */\n onChange: (assets: Asset[] | []) => void;\n /**\n label for autocomplete input.\n */\n label: string;\n /**\n type of asset.\n */\n type: 'program' | 'rig' | 'well' | 'frac_fleet' | 'drillout_unit' | 'pad' | 'assets';\n /**\n css for root component.\n */\n className?: string;\n /**\n custom query params for assets request like fields, per_page.\n */\n customRequestQueryParams?: Record<string, unknown> & {\n fields?: string[];\n per_page?: number | string;\n };\n /**\n material ui autocomplete classes.\n */\n classes?: any;\n};\n\nconst AssetsMultipleSelector = memo(\n ({\n selectedAssets = initialSelectedAssets,\n onChange,\n label,\n className,\n type,\n customRequestQueryParams,\n classes = {},\n }: AssetsMultipleSelectorProps) => {\n const styles = useStyles();\n\n const { isLoading, setIsLoading, data, loadData } = useLoadedData({\n loadFn: mapAssetGetRequest(type, true),\n initialData: initialData as any,\n getDataFromResponseFn,\n isCacheEnabled: true,\n });\n const { data: assetsData, total } = data ?? initialData;\n const [searchValue, setSearchValue] = useState('');\n\n useEffect(() => {\n loadAssets('', customRequestQueryParams);\n }, []);\n\n const selectedOptions: AssetsMultipleSelectorProps['selectedAssets'] & {} = useMemo(\n () =>\n selectedAssets.map(asset => ({\n ...asset,\n id: asset.id,\n label: asset.name,\n })),\n [selectedAssets]\n );\n\n const options: (Asset & { label: string })[] = useMemo(() => {\n const optionsMap: Record<string, Asset & { label: string }> = {};\n const allOptions = selectedOptions.length ? assetsData.concat(selectedOptions) : assetsData;\n allOptions.forEach((asset: Asset) => {\n optionsMap[asset.id] = {\n ...asset,\n id: asset.id,\n label: asset.name,\n };\n });\n\n return Object.values(sortBy(optionsMap, 'label'));\n }, [assetsData, selectedAssets, searchValue]);\n\n const loadAssets = useCallback(\n (\n search: string,\n customRequestQueryParams: AssetsMultipleSelectorProps['customRequestQueryParams'] = {}\n ) => {\n const params = {\n ...defaultQueryParams,\n per_page: DEFAULT_ASSETS_PER_PAGE,\n ...customRequestQueryParams,\n fields: [`${type}.name`].concat(customRequestQueryParams?.fields || []),\n };\n\n loadData({\n search,\n ...params,\n });\n },\n []\n );\n\n const handleChange = (_event: unknown, visibleSelectedOptions: Asset[], reason?: string) => {\n if (reason === 'reset') return;\n\n const newAssets = visibleSelectedOptions.map(option => {\n return {\n ...option,\n name: option.label as string,\n };\n });\n\n onChange(newAssets);\n };\n\n const onInputReset = () => {\n setSearchValue('');\n loadAssets('', customRequestQueryParams);\n };\n\n const handleInputChange = (value: string, reason: string) => {\n if (reason === 'reset' || value === '') {\n onInputReset();\n return;\n }\n\n if (value.trimStart() !== searchValue) {\n setSearchValue(value.trimStart());\n setIsLoading(true);\n loadAssets(value.trimStart(), customRequestQueryParams);\n }\n };\n\n const countNotShowedAssets = () => {\n const optionsCount = total - assetsData?.length;\n if (optionsCount === 0) return null;\n\n return optionsCount;\n };\n\n const paperFooter = useMemo(() => {\n const notShowedAssetsQuantity = countNotShowedAssets();\n return notShowedAssetsQuantity && !isLoading && searchValue ? (\n <div className={styles.footer}>\n {notShowedAssetsQuantity} additional items not displayed. Continue typing for more refined\n results.\n </div>\n ) : null;\n }, [assetsData, isLoading, !!searchValue, total]);\n\n const { listbox, paper, ...restClasses } = classes;\n\n return (\n <Search\n data-testid=\"offsetPadDropdown\"\n value={selectedOptions}\n onChange={handleChange}\n TextFieldProps={{ label }}\n className={className}\n classes={{\n listbox: classnames(styles.listbox, listbox),\n paper: classnames(styles.paper, paper),\n ...restClasses,\n }}\n loading={isLoading}\n options={options}\n placeholder=\"\"\n multiple\n filterSelectedOptions={false}\n AutocompleteProps={{ forcePopupIcon: true }}\n isHiddenAllOption\n onInputChangeCallback={handleInputChange}\n onInputReset={onInputReset}\n paperFooter={paperFooter}\n getOptionSelected={(option, value) => +option.id === +value.id}\n isPrioritizedSelectedOptions\n />\n );\n }\n);\n\nexport default AssetsMultipleSelector;\n"],"names":["useStyles","makeStyles","theme","listbox","maxHeight","paper","width","footer","fontSize","color","palette","primary","text6","lineHeight","padding","getDataFromResponseFn","response","_response$headers","data","jsonaDataFormatter","deserialize","total","Number","headers","get","initialSelectedAssets","defaultQueryParams","initialData","AssetsMultipleSelector","memo","_ref","_ref$selectedAssets","selectedAssets","onChange","label","className","type","customRequestQueryParams","_ref$classes","classes","styles","_useLoadedData","useLoadedData","loadFn","mapAssetGetRequest","isCacheEnabled","isLoading","setIsLoading","loadData","_ref2","assetsData","useState","_useState2","_slicedToArray","_useState","searchValue","setSearchValue","useEffect","loadAssets","selectedOptions","useMemo","map","asset","_objectSpread","id","name","options","optionsMap","length","concat","forEach","Object","values","sortBy","useCallback","search","arguments","undefined","params","per_page","fields","onInputReset","paperFooter","optionsCount","notShowedAssetsQuantity","_jsxs","children","restClasses","_excluded","_jsx","Search","value","_event","visibleSelectedOptions","reason","newAssets","option","TextFieldProps","classnames","loading","placeholder","multiple","filterSelectedOptions","AutocompleteProps","forcePopupIcon","isHiddenAllOption","onInputChangeCallback","trimStart","getOptionSelected","isPrioritizedSelectedOptions"],"mappings":"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"}
@@ -22,6 +22,9 @@ export type ColorPickerProps = {
22
22
  popoverPlacement?: PopoverProps['placement'];
23
23
  onOpen?: () => void;
24
24
  onClose?: () => void;
25
+ /**
26
+ * An escape hatch to tweak styling of internal elements
27
+ */
25
28
  elementsClassNames?: Partial<Omit<Required<TextInputNextProps>['elementsClassNames'], 'message' | 'numberStepButtons' | 'prefix' | 'suffix'> & Record<'indicator' | 'popover', string>>;
26
29
  className?: string;
27
30
  testId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAcnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,kBAAkB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAClD,SAAS,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CACtD,GACC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAUF,eAAO,MAAM,WAAW,mLAgBrB,gBAAgB,4CAwWlB,CAAC"}
1
+ {"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AAcnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAC1B,IAAI,CACF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,EAClD,SAAS,GAAG,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CACtD,GACC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAmBF,eAAO,MAAM,WAAW,mLAgBrB,gBAAgB,4CAgXlB,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/defineProperty";import s from"classnames";import{useMemo as i,useState as c,useRef as t,useCallback as r,useEffect as e}from"react";import{ChromePicker as a}from"react-color";import{throttle as l}from"lodash";import{v4 as m}from"uuid";import{TextInputNext as u}from"../TextInputNext/TextInputNext.js";import{Popover as p}from"../Popover/Popover.js";import{ButtonIcon as d}from"../ButtonIcon/ButtonIcon.js";import{Tooltip as j}from"../Tooltip/Tooltip.js";import{Popper as I}from"../Popper/Popper.js";import{Swatches as f}from"./Swatches/Swatches.js";import{parseColor as b,channelsToHex as h,channelsToRgba as v,defaultColor as C}from"./utils.js";import{OpacityDragTracker as y}from"./OpacityDragtracker/OpacityDragtracker.js";import{useChromePickerAccessibility as g}from"./useChromePickerAccessibility.js";import O from"./ColorPicker.scss.js";import{PaletteIcon as P,PickerIcon as k}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/DragOne.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/SearchOne.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/InfoRounded.js";import"../../icons/customIcons/icons/FlameFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Global.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/PinOne.js";import"../../icons/customIcons/icons/PinOneCrossed.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import"../../icons/customIcons/icons/InterventionUnit.js";import"../../icons/customIcons/icons/CloudDelete.js";import"../../icons/customIcons/icons/Lasso.js";import"../../icons/customIcons/icons/Radius.js";import"../../icons/customIcons/icons/ErrorOps.js";import"../../icons/customIcons/icons/DataTypeOps.js";import"../../icons/customIcons/icons/FalsePositiveOps.js";import"../../icons/customIcons/icons/CalibrationOps.js";import"../../icons/customIcons/icons/CriticalOps.js";import"../../icons/customIcons/icons/Company.js";import"../../icons/customIcons/icons/ArchiveOne.js";import"../../icons/customIcons/icons/ParseBotFusion.js";import"../../icons/customIcons/icons/Connect.js";import"../../icons/customIcons/icons/PuzzleOne.js";import"../../icons/customIcons/icons/Feed.js";import"../../icons/customIcons/icons/Prompt.js";import"../../icons/customIcons/icons/Companies.js";import"../../icons/customIcons/icons/ClipboardAi.js";import"../../icons/customIcons/icons/Key.js";import"../../icons/customIcons/icons/AtSignCrossed.js";import"../../icons/customIcons/icons/MappingManual.js";import"../../icons/customIcons/icons/Mapping.js";import"../../icons/customIcons/icons/Metrics.js";import"../../icons/customIcons/icons/Drops.js";import"../../icons/customIcons/icons/ClipboardSearch.js";import"../../icons/customIcons/icons/Template.js";import"../../icons/customIcons/icons/ClipboardMetrics.js";import"../../icons/customIcons/icons/ClipboardBuilder.js";import"../../icons/customIcons/icons/UnitConversion.js";import"../../icons/customIcons/icons/NPT.js";import"../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as D,Fragment as F,jsx as N}from"react/jsx-runtime";function x(o,n){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable}))),s.push.apply(s,i)}return s}function A(o){for(var s=1;s<arguments.length;s++){var i=null!=arguments[s]?arguments[s]:{};s%2?x(Object(i),!0).forEach((function(s){n(o,s,i[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(i)):x(Object(i)).forEach((function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(i,n))}))}return o}var S={small:O.small,medium:O.medium,large:O.large},w=function(n){var x=n.format,w=void 0===x?"hex":x,T=n.className,E=n.label,M=n.labelPlacement,B=void 0===M?"top":M,R=n.popoverPlacement,z=void 0===R?"bottom-start":R,W=n.testId,L=n.disabled,G=n.size,K=void 0===G?"small":G,U=n.onOpen,q=n.onClose,V=n.value,H=void 0===V?C:V,Z=n.onChange,J=n.disableOpacityDrag,Q=n.enableAlpha,X=void 0!==Q&&Q,Y=n.elementsClassNames,$=void 0===Y?{}:Y,_=i((function(){return{input:s(O.input,$.input),inputContainer:s(O.inputContainer,$.inputContainer),label:s(O.label,$.label),prefix:O.prefixContainer,suffix:O.suffixContainer,numberStepButtons:O.numberStepButtons}}),[$.input,$.inputContainer,$.label]),oo=i((function(){try{var o=b(H);return A(A({},o),{},{a:X?o.a:1})}catch(o){return b(C)}}),[H,X]),no=c(!1),so=o(no,2),io=so[0],co=so[1],to=t(null),ro=t(null),eo=c(!0),ao=o(eo,2),lo=ao[0],mo=ao[1],uo=c(null),po=o(uo,2),jo=po[0],Io=po[1],fo=c(oo),bo=o(fo,2),ho=bo[0],vo=bo[1],Co=t(null),yo=i((function(){return"corva-color-picker-".concat(m())}),[]),go="".concat(yo,"-opacity-input"),Oo="".concat(yo,"-label"),Po="".concat(yo,"-opacity-label"),ko=Boolean(E),Do=r((function(){co(!0),null==U||U()}),[U]),Fo=r((function(o){o.preventDefault(),Io(null),Do()}),[Do]),No=r((function(){Io(null),Do()}),[Do]),xo=r((function(o){L||"Enter"!==o.key&&" "!==o.key&&"ArrowDown"!==o.key||(o.preventDefault(),Io("palette"),Do())}),[L,Do]),Ao=r((function(){var o,n,s=!(null===(o=Co.current)||void 0===o||!o.contains(document.activeElement));(Io(null),co(!1),null==q||q(),s)&&(null===(n=ro.current)||void 0===n||n.focus({preventScroll:!0}))}),[q]),So=r((function(o){Io(0===o.detail?"palette":null),mo(!0)}),[]),wo=r((function(o){Io(0===o.detail?"picker":null),mo(!1)}),[]),To=r((function(){return Io(null)}),[]),Eo=r((function(o){return vo(o.rgb)}),[]),Mo=r((function(o){var n="hex"===w?h(o,X):v(o,X);null==Z||Z(n)}),[w,Z,X]),Bo=r((function(o){vo(o),Mo(o)}),[Mo]),Ro=g({color:ho,enableAlpha:X,isActive:!lo,onChange:Bo}),zo=Ro.pickerRef,Wo=Ro.onKeyDown;e((function(){var o;if("picker"===jo&&!lo){var n=null===(o=zo.current)||void 0===o?void 0:o.querySelector('[data-color-picker-control="saturation"]');n&&(n.focus({preventScroll:!0}),To())}}),[To,jo,lo,zo]);var Lo=r((function(o){var n=Number(o);if(!(Number.isNaN(n)||n<0||n>100)){var s=A(A({},oo),{},{a:n/100});Mo(s)}}),[oo,Mo]),Go=r((function(o){Mo(o.rgb)}),[Mo]),Ko=r((function(o){var n=oo.a||1,s=X&&0===o.a?0:n;Mo(A(A({},o),{},{a:s}))}),[Mo,oo.a,X]),Uo=r((function(){setTimeout((function(){var o,n;co(!1),null===(o=document.activeElement)||void 0===o||null===(n=o.blur)||void 0===n||n.call(o)}),0)}),[]),qo=i((function(){return l((function(o){var n=String(Math.round(o));Lo(n)}),100)}),[Lo]);e((function(){vo(oo)}),[oo]),e((function(){io&&mo(!0)}),[io]);var Vo=String(Math.round(100*ho.a)),Ho=(null==z?void 0:z.startsWith("top"))||(null==z?void 0:z.startsWith("bottom")),Zo=(null==z?void 0:z.startsWith("left"))||(null==z?void 0:z.startsWith("right")),Jo=ko?D(F,{children:[N("label",{id:Oo,htmlFor:go,children:"string"==typeof E?N(u.Label,{children:E}):E}),N("span",{id:Po,hidden:!0,children:"Opacity"})]}):void 0,Qo=i((function(){return ko?{id:go,"aria-labelledby":"".concat(Oo," ").concat(Po)}:{id:go,"aria-label":"Opacity"}}),[ko,go,Oo,Po]);return D(F,{children:[N(u,{label:Jo,labelPlacement:B,disabled:L,size:K,rootTagName:"div",prefix:D(F,{children:[D("div",{className:O.fakeValue,children:[Vo,N("span",{className:O.fakeValuePercent,children:"%"})]}),N("div",{ref:ro,className:s(O.indicator,0===ho.a&&O.transparent,$.indicator),style:{"--corvaui-colorpicker-indicatorcolor":h(ho,!1)},onClick:L?void 0:Fo,onKeyDown:xo,role:"button","aria-label":ko?void 0:"Color picker","aria-labelledby":ko?Oo:void 0,"aria-expanded":io,"aria-disabled":L,tabIndex:L?-1:0})]}),suffix:!io&&X&&!J&&!L&&N(y,{value:Number(Vo),onDrag:qo,onDragEnd:Uo}),className:s(O.root,S[K],!X&&O.noAlpha,T),testId:W,inputContainerRef:to,value:Vo,onChange:Lo,onFocus:No,inputType:"number",inputMode:"numeric",htmlAttributes:Qo,elementsClassNames:_}),D(p,{ref:Co,anchorEl:to.current,open:io,onClose:Ao,placement:z,className:s(O.popover,Ho&&O.marginVertical,Zo&&O.marginHorizontal,0===ho.a&&O.isTransparent,$.popover),children:[lo?N(f,{onChange:Ko,value:oo,addTransparent:X,autoFocus:"palette"===jo,onAutoFocus:To}):N("div",{ref:zo,className:O.pickerContainer,onKeyDown:Wo,children:N(a,{color:ho,onChange:Eo,onChangeComplete:Go,disableAlpha:!X,className:O.picker})}),D("div",{className:O.switchButtons,children:[N(j,{title:"Palette",children:N(d,{ariaLabel:"Show color palette",size:"medium",type:lo?"secondary":"tertiary",onClick:So,children:N(P,{})})}),N(j,{title:"Pick your own",children:N(d,{ariaLabel:"Show custom color picker",size:"medium",type:lo?"tertiary":"secondary",onClick:wo,children:N(k,{})})})]})]}),io&&X&&!J&&N(I,{open:io,anchorEl:to.current,className:O.dragTrackerPopper,placement:"right",children:N(y,{onDrag:qo,onDragEnd:Uo})})]})};export{w as ColorPicker};
1
+ import o from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/defineProperty";import s from"classnames";import{useMemo as c,useState as i,useRef as t,useCallback as r,useEffect as e}from"react";import{ChromePicker as a}from"react-color";import{throttle as m}from"lodash";import{v4 as l}from"uuid";import{TextInputNext as u}from"../TextInputNext/TextInputNext.js";import{Popover as p}from"../Popover/Popover.js";import{ButtonIcon as d}from"../ButtonIcon/ButtonIcon.js";import{Tooltip as j}from"../Tooltip/Tooltip.js";import{Popper as I}from"../Popper/Popper.js";import{Swatches as f}from"./Swatches/Swatches.js";import{parseColor as h,channelsToHex as b,channelsToRgba as v,defaultColor as C}from"./utils.js";import{OpacityDragTracker as y}from"./OpacityDragtracker/OpacityDragtracker.js";import{useChromePickerAccessibility as g}from"./useChromePickerAccessibility.js";import O from"./ColorPicker.scss.js";import{PaletteIcon as P,PickerIcon as k}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/DragOne.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/SearchOne.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/InfoRounded.js";import"../../icons/customIcons/icons/FlameFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Global.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/PinOne.js";import"../../icons/customIcons/icons/PinOneCrossed.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import"../../icons/customIcons/icons/InterventionUnit.js";import"../../icons/customIcons/icons/CloudDelete.js";import"../../icons/customIcons/icons/Lasso.js";import"../../icons/customIcons/icons/Radius.js";import"../../icons/customIcons/icons/ErrorOps.js";import"../../icons/customIcons/icons/DataTypeOps.js";import"../../icons/customIcons/icons/FalsePositiveOps.js";import"../../icons/customIcons/icons/CalibrationOps.js";import"../../icons/customIcons/icons/CriticalOps.js";import"../../icons/customIcons/icons/Company.js";import"../../icons/customIcons/icons/ArchiveOne.js";import"../../icons/customIcons/icons/ParseBotFusion.js";import"../../icons/customIcons/icons/Connect.js";import"../../icons/customIcons/icons/PuzzleOne.js";import"../../icons/customIcons/icons/Feed.js";import"../../icons/customIcons/icons/Prompt.js";import"../../icons/customIcons/icons/Companies.js";import"../../icons/customIcons/icons/ClipboardAi.js";import"../../icons/customIcons/icons/Key.js";import"../../icons/customIcons/icons/AtSignCrossed.js";import"../../icons/customIcons/icons/MappingManual.js";import"../../icons/customIcons/icons/Mapping.js";import"../../icons/customIcons/icons/Metrics.js";import"../../icons/customIcons/icons/Drops.js";import"../../icons/customIcons/icons/ClipboardSearch.js";import"../../icons/customIcons/icons/Template.js";import"../../icons/customIcons/icons/ClipboardMetrics.js";import"../../icons/customIcons/icons/ClipboardBuilder.js";import"../../icons/customIcons/icons/UnitConversion.js";import"../../icons/customIcons/icons/NPT.js";import"../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as D,Fragment as F,jsx as N}from"react/jsx-runtime";function x(o,n){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);n&&(c=c.filter((function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable}))),s.push.apply(s,c)}return s}function A(o){for(var s=1;s<arguments.length;s++){var c=null!=arguments[s]?arguments[s]:{};s%2?x(Object(c),!0).forEach((function(s){n(o,s,c[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(c)):x(Object(c)).forEach((function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(c,n))}))}return o}var S={small:O.small,medium:O.medium,large:O.large},w={inputContainer:O.inputContainer,numberStepButtons:O.numberStepButtons,prefix:O.prefixContainer,suffix:O.suffixContainer,input:O.input,label:O.label},T=function(x){var T=x.format,E=void 0===T?"hex":T,M=x.className,B=x.label,R=x.labelPlacement,z=void 0===R?"top":R,W=x.popoverPlacement,L=void 0===W?"bottom-start":W,G=x.testId,K=x.disabled,U=x.size,q=void 0===U?"small":U,V=x.onOpen,H=x.onClose,Z=x.value,J=void 0===Z?C:Z,Q=x.onChange,X=x.disableOpacityDrag,Y=x.enableAlpha,$=void 0!==Y&&Y,_=x.elementsClassNames,oo=c((function(){try{var o=h(J);return A(A({},o),{},{a:$?o.a:1})}catch(o){return h(C)}}),[J,$]),no=c((function(){return _?Object.entries(_).reduce((function(c,i){var t=o(i,2),r=t[0],e=t[1];return A(A({},c),{},n({},r,c[r]?s(c[r],e):e))}),A({},w)):w}),[_]),so=i(!1),co=o(so,2),io=co[0],to=co[1],ro=t(null),eo=t(null),ao=i(!0),mo=o(ao,2),lo=mo[0],uo=mo[1],po=i(null),jo=o(po,2),Io=jo[0],fo=jo[1],ho=i(oo),bo=o(ho,2),vo=bo[0],Co=bo[1],yo=t(null),go=c((function(){return"corva-color-picker-".concat(l())}),[]),Oo="".concat(go,"-opacity-input"),Po="".concat(go,"-label"),ko="".concat(go,"-opacity-label"),Do=Boolean(B),Fo=r((function(){to(!0),null==V||V()}),[V]),No=r((function(o){o.preventDefault(),fo(null),Fo()}),[Fo]),xo=r((function(){fo(null),Fo()}),[Fo]),Ao=r((function(o){K||"Enter"!==o.key&&" "!==o.key&&"ArrowDown"!==o.key||(o.preventDefault(),fo("palette"),Fo())}),[K,Fo]),So=r((function(){var o,n,s=!(null===(o=yo.current)||void 0===o||!o.contains(document.activeElement));(fo(null),to(!1),null==H||H(),s)&&(null===(n=eo.current)||void 0===n||n.focus({preventScroll:!0}))}),[H]),wo=r((function(o){fo(0===o.detail?"palette":null),uo(!0)}),[]),To=r((function(o){fo(0===o.detail?"picker":null),uo(!1)}),[]),Eo=r((function(){return fo(null)}),[]),Mo=r((function(o){return Co(o.rgb)}),[]),Bo=r((function(o){var n="hex"===E?b(o,$):v(o,$);null==Q||Q(n)}),[E,Q,$]),Ro=r((function(o){Co(o),Bo(o)}),[Bo]),zo=g({color:vo,enableAlpha:$,isActive:!lo,onChange:Ro}),Wo=zo.pickerRef,Lo=zo.onKeyDown;e((function(){var o;if("picker"===Io&&!lo){var n=null===(o=Wo.current)||void 0===o?void 0:o.querySelector('[data-color-picker-control="saturation"]');n&&(n.focus({preventScroll:!0}),Eo())}}),[Eo,Io,lo,Wo]);var Go=r((function(o){var n=Number(o);if(!(Number.isNaN(n)||n<0||n>100)){var s=A(A({},oo),{},{a:n/100});Bo(s)}}),[oo,Bo]),Ko=r((function(o){Bo(o.rgb)}),[Bo]),Uo=r((function(o){var n=oo.a||1,s=$&&0===o.a?0:n;Bo(A(A({},o),{},{a:s}))}),[Bo,oo.a,$]),qo=r((function(){setTimeout((function(){var o,n;to(!1),null===(o=document.activeElement)||void 0===o||null===(n=o.blur)||void 0===n||n.call(o)}),0)}),[]),Vo=c((function(){return m((function(o){var n=String(Math.round(o));Go(n)}),100)}),[Go]);e((function(){Co(oo)}),[oo]),e((function(){io&&uo(!0)}),[io]);var Ho=String(Math.round(100*vo.a)),Zo=(null==L?void 0:L.startsWith("top"))||(null==L?void 0:L.startsWith("bottom")),Jo=(null==L?void 0:L.startsWith("left"))||(null==L?void 0:L.startsWith("right")),Qo=Do?D(F,{children:[N("label",{id:Po,htmlFor:Oo,children:"string"==typeof B?N(u.Label,{children:B}):B}),N("span",{id:ko,hidden:!0,children:"Opacity"})]}):void 0,Xo=c((function(){return Do?{id:Oo,"aria-labelledby":"".concat(Po," ").concat(ko)}:{id:Oo,"aria-label":"Opacity"}}),[Do,Oo,Po,ko]);return D(F,{children:[N(u,{label:Qo,labelPlacement:z,disabled:K,size:q,rootTagName:"div",prefix:D(F,{children:[D("div",{className:O.fakeValue,children:[Ho,N("span",{className:O.fakeValuePercent,children:"%"})]}),N("div",{ref:eo,className:s(O.indicator,0===vo.a&&O.transparent,no.indicator),style:{"--corvaui-colorpicker-indicatorcolor":b(vo,!1)},onClick:K?void 0:No,onKeyDown:Ao,role:"button","aria-label":Do?void 0:"Color picker","aria-labelledby":Do?Po:void 0,"aria-expanded":io,"aria-disabled":K,tabIndex:K?-1:0})]}),suffix:!io&&$&&!X&&!K&&N(y,{value:Number(Ho),onDrag:Vo,onDragEnd:qo}),className:s(O.root,S[q],!$&&O.noAlpha,M),testId:G,inputContainerRef:ro,value:Ho,onChange:Go,onFocus:xo,inputType:"number",inputMode:"numeric",elementsClassNames:no,htmlAttributes:Xo}),D(p,{ref:yo,anchorEl:ro.current,open:io,onClose:So,placement:L,className:s(O.popover,Zo&&O.marginVertical,Jo&&O.marginHorizontal,0===vo.a&&O.isTransparent,no.popover),children:[lo?N(f,{onChange:Uo,value:oo,addTransparent:$,autoFocus:"palette"===Io,onAutoFocus:Eo}):N("div",{ref:Wo,className:O.pickerContainer,onKeyDown:Lo,children:N(a,{color:vo,onChange:Mo,onChangeComplete:Ko,disableAlpha:!$,className:O.picker})}),D("div",{className:O.switchButtons,children:[N(j,{title:"Palette",children:N(d,{ariaLabel:"Show color palette",size:"medium",type:lo?"secondary":"tertiary",onClick:wo,children:N(P,{})})}),N(j,{title:"Pick your own",children:N(d,{ariaLabel:"Show custom color picker",size:"medium",type:lo?"tertiary":"secondary",onClick:To,children:N(k,{})})})]})]}),io&&$&&!X&&N(I,{open:io,anchorEl:ro.current,className:O.dragTrackerPopper,placement:"right",children:N(y,{onDrag:Vo,onDragEnd:qo})})]})};export{T as ColorPicker};
2
2
  //# sourceMappingURL=ColorPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames = {},\n}: ColorPickerProps) => {\n const inputElementsClassNames = useMemo<TextInputNextProps['elementsClassNames']>(\n () => ({\n input: classNames(styles.input, elementsClassNames.input),\n inputContainer: classNames(styles.inputContainer, elementsClassNames.inputContainer),\n label: classNames(styles.label, elementsClassNames.label),\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n numberStepButtons: styles.numberStepButtons,\n }),\n [elementsClassNames.input, elementsClassNames.inputContainer, elementsClassNames.label]\n );\n\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n elementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n htmlAttributes={inputHtmlAttributes}\n elementsClassNames={inputElementsClassNames}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n elementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ColorPicker","_ref","_ref$format","format","className","label","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","_ref$elementsClassNam","elementsClassNames","inputElementsClassNames","useMemo","input","classNames","inputContainer","prefix","prefixContainer","suffix","suffixContainer","numberStepButtons","valueChannels","channels","parseColor","_objectSpread","a","_","useState","_useState2","_slicedToArray","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","key","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","_Fragment","children","_jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPicker.js","sources":["../../../src/componentsV2/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport {\n CSSProperties,\n KeyboardEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChromePicker, ColorResult } from 'react-color';\nimport { throttle } from 'lodash';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { TextInputNext, TextInputNextProps } from '../TextInputNext';\nimport { Popover, PopoverProps } from '../Popover';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Tooltip } from '../Tooltip';\nimport { Popper } from '../Popper';\n\nimport { Swatches } from './Swatches';\nimport { channelsToHex, channelsToRgba, ColorChannels, defaultColor, parseColor } from './utils';\nimport { OpacityDragTracker } from './OpacityDragtracker';\nimport { useChromePickerAccessibility } from './useChromePickerAccessibility';\n\nimport styles from './ColorPicker.scss';\n\nimport { PaletteIcon, PickerIcon } from '~/icons';\n\nexport type ColorPickerProps = {\n value?: string;\n onChange?: (value: string) => void;\n\n size?: TextInputNextProps['size'];\n label?: TextInputNextProps['label'];\n labelPlacement?: TextInputNextProps['labelPlacement'];\n disabled?: boolean;\n /**\n * Disables drag to change opacity functinality\n */\n disableOpacityDrag?: boolean;\n /**\n * Determines base format of the colour `rgb(RRR, GGG, BBB[, AAA])` or `#RRGGBB[AA]`\n */\n format?: 'rgb' | 'hex';\n /**\n * Allows user to control color's opacity, adds alpha channel to resulting color string\n */\n enableAlpha?: boolean;\n\n popoverPlacement?: PopoverProps['placement'];\n\n onOpen?: () => void;\n onClose?: () => void;\n\n /**\n * An escape hatch to tweak styling of internal elements\n */\n elementsClassNames?: Partial<\n Omit<\n Required<TextInputNextProps>['elementsClassNames'],\n 'message' | 'numberStepButtons' | 'prefix' | 'suffix'\n > &\n Record<'indicator' | 'popover', string>\n >;\n\n className?: string;\n testId?: string;\n};\n\nconst SizeToClassMap: Record<Required<ColorPickerProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nconst ownInputElementsClassNames: TextInputNextProps['elementsClassNames'] = {\n inputContainer: styles.inputContainer,\n numberStepButtons: styles.numberStepButtons,\n prefix: styles.prefixContainer,\n suffix: styles.suffixContainer,\n input: styles.input,\n label: styles.label,\n};\n\ntype FocusTarget = 'palette' | 'picker';\n\nexport const ColorPicker = ({\n format = 'hex',\n className,\n label,\n labelPlacement = 'top',\n popoverPlacement = 'bottom-start',\n testId,\n disabled,\n size = 'small',\n onOpen,\n onClose,\n value = defaultColor,\n onChange,\n disableOpacityDrag,\n enableAlpha = false,\n elementsClassNames,\n}: ColorPickerProps) => {\n const valueChannels = useMemo(() => {\n try {\n const channels = parseColor(value);\n\n return { ...channels, a: enableAlpha ? channels.a : 1 };\n } catch (_) {\n return parseColor(defaultColor);\n }\n }, [value, enableAlpha]);\n\n const realElementsClassNames = useMemo((): Required<ColorPickerProps>['elementsClassNames'] => {\n return elementsClassNames\n ? Object.entries(elementsClassNames).reduce<Required<ColorPickerProps>['elementsClassNames']>(\n (acc, pair) => {\n const [key, value] = pair as [\n keyof Required<ColorPickerProps>['elementsClassNames'],\n string\n ];\n return {\n ...acc,\n [key]: acc[key] ? classNames(acc[key], value) : value,\n };\n },\n {\n ...ownInputElementsClassNames,\n }\n )\n : ownInputElementsClassNames;\n }, [elementsClassNames]);\n\n const [isMenuOpen, setIsOpen] = useState(false);\n const inputContainerRef = useRef<HTMLDivElement>(null);\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [isSwatches, setIsSwatches] = useState(true);\n const [focusTarget, setFocusTarget] = useState<FocusTarget | null>(null);\n const [internalValue, setInternalValue] = useState<ColorChannels>(valueChannels);\n const popoverRef = useRef<HTMLDivElement>(null);\n const accessibilityId = useMemo(() => `corva-color-picker-${uuidv4()}`, []);\n const inputId = `${accessibilityId}-opacity-input`;\n const labelId = `${accessibilityId}-label`;\n const opacityLabelId = `${accessibilityId}-opacity-label`;\n const hasLabel = Boolean(label);\n\n const openMenu = useCallback(() => {\n setIsOpen(true);\n onOpen?.();\n }, [onOpen]);\n\n const openMenuSwatch = useCallback<MouseEventHandler>(\n e => {\n e.preventDefault();\n setFocusTarget(null);\n openMenu();\n },\n [openMenu]\n );\n\n const openMenuFocus = useCallback(() => {\n setFocusTarget(null);\n openMenu();\n }, [openMenu]);\n\n const openMenuKeyDown = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n event => {\n if (!disabled && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault();\n setFocusTarget('palette');\n openMenu();\n }\n },\n [disabled, openMenu]\n );\n\n const closeMenu = useCallback(() => {\n const isFocusInPopover = !!popoverRef.current?.contains(document.activeElement);\n\n setFocusTarget(null);\n setIsOpen(false);\n onClose?.();\n\n // Return focus to the trigger so keyboard flow is not lost after Escape/outside dismiss\n if (isFocusInPopover) {\n indicatorRef.current?.focus({ preventScroll: true });\n }\n }, [onClose]);\n\n const setSwatches = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'palette' : null);\n setIsSwatches(true);\n }, []);\n\n const setPicker = useCallback<MouseEventHandler<HTMLButtonElement>>(event => {\n setFocusTarget(event.detail === 0 ? 'picker' : null);\n setIsSwatches(false);\n }, []);\n\n const clearFocusTarget = useCallback(() => setFocusTarget(null), []);\n\n const onInternalValueChange = useCallback(\n (color: ColorResult) => setInternalValue(color.rgb),\n []\n );\n\n const onActualChange = useCallback(\n (color: ColorChannels) => {\n const formatted =\n format === 'hex' ? channelsToHex(color, enableAlpha) : channelsToRgba(color, enableAlpha);\n onChange?.(formatted);\n },\n [format, onChange, enableAlpha]\n );\n\n const onKeyboardPickerChange = useCallback(\n (color: ColorChannels) => {\n setInternalValue(color);\n onActualChange(color);\n },\n [onActualChange]\n );\n\n const { pickerRef, onKeyDown: onPickerKeyDown } = useChromePickerAccessibility({\n color: internalValue,\n enableAlpha,\n isActive: !isSwatches,\n onChange: onKeyboardPickerChange,\n });\n\n useEffect(() => {\n if (focusTarget !== 'picker' || isSwatches) {\n return;\n }\n\n const firstControl = pickerRef.current?.querySelector<HTMLElement>(\n '[data-color-picker-control=\"saturation\"]'\n );\n\n if (firstControl) {\n firstControl.focus({ preventScroll: true });\n clearFocusTarget();\n }\n }, [clearFocusTarget, focusTarget, isSwatches, pickerRef]);\n\n const onOpacityInputChange = useCallback(\n (opacityString: string) => {\n const opacityNumber = Number(opacityString);\n\n if (Number.isNaN(opacityNumber) || opacityNumber < 0 || opacityNumber > 100) {\n return;\n }\n\n const color = { ...valueChannels, a: opacityNumber / 100 };\n onActualChange(color);\n },\n [valueChannels, onActualChange]\n );\n\n const pickerOnChange = useCallback(\n (color: ColorResult) => {\n onActualChange(color.rgb);\n },\n [onActualChange]\n );\n\n const swatchOnChange = useCallback(\n (color: ColorChannels) => {\n const nonZeroAlpha = valueChannels.a || 1;\n const alpha = enableAlpha && color.a === 0 ? 0 : nonZeroAlpha;\n onActualChange({ ...color, a: alpha });\n },\n [onActualChange, valueChannels.a, enableAlpha]\n );\n\n // Prevents focus on opacity drag end\n const onOpacityDragEnd = useCallback(() => {\n setTimeout(() => {\n setIsOpen(false);\n (document.activeElement as HTMLElement | null)?.blur?.();\n }, 0);\n }, []);\n\n const onOpacityDrag = useMemo(\n () =>\n throttle((percent: number) => {\n const newFieldValue = String(Math.round(percent));\n onOpacityInputChange(newFieldValue);\n }, 100),\n [onOpacityInputChange]\n );\n\n useEffect(() => {\n setInternalValue(valueChannels);\n }, [valueChannels]);\n\n useEffect(() => {\n if (isMenuOpen) {\n setIsSwatches(true);\n }\n }, [isMenuOpen]);\n\n const inputValue = String(Math.round(internalValue.a * 100));\n\n const hasVerticalMargin =\n popoverPlacement?.startsWith('top') || popoverPlacement?.startsWith('bottom');\n const hasHorizontalMargin =\n popoverPlacement?.startsWith('left') || popoverPlacement?.startsWith('right');\n const accessibleLabel = hasLabel ? (\n <>\n <label id={labelId} htmlFor={inputId}>\n {typeof label === 'string' ? <TextInputNext.Label>{label}</TextInputNext.Label> : label}\n </label>\n <span id={opacityLabelId} hidden>\n Opacity\n </span>\n </>\n ) : undefined;\n const inputHtmlAttributes: TextInputNextProps['htmlAttributes'] = useMemo(\n () =>\n hasLabel\n ? {\n id: inputId,\n 'aria-labelledby': `${labelId} ${opacityLabelId}`,\n }\n : {\n id: inputId,\n 'aria-label': 'Opacity',\n },\n [hasLabel, inputId, labelId, opacityLabelId]\n );\n\n return (\n <>\n <TextInputNext\n label={accessibleLabel}\n labelPlacement={labelPlacement}\n disabled={disabled}\n size={size}\n rootTagName=\"div\"\n prefix={\n <>\n <div className={styles.fakeValue}>\n {inputValue}\n <span className={styles.fakeValuePercent}>%</span>\n </div>\n\n <div\n ref={indicatorRef}\n className={classNames(\n styles.indicator,\n internalValue.a === 0 && styles.transparent,\n realElementsClassNames.indicator\n )}\n style={\n {\n '--corvaui-colorpicker-indicatorcolor': channelsToHex(internalValue, false),\n } as CSSProperties\n }\n onClick={disabled ? undefined : openMenuSwatch}\n onKeyDown={openMenuKeyDown}\n role=\"button\"\n aria-label={hasLabel ? undefined : 'Color picker'}\n aria-labelledby={hasLabel ? labelId : undefined}\n aria-expanded={isMenuOpen}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n />\n </>\n }\n suffix={\n !isMenuOpen &&\n enableAlpha &&\n !disableOpacityDrag &&\n !disabled && (\n <OpacityDragTracker\n value={Number(inputValue)}\n onDrag={onOpacityDrag}\n onDragEnd={onOpacityDragEnd}\n />\n )\n }\n className={classNames(\n styles.root,\n SizeToClassMap[size],\n !enableAlpha && styles.noAlpha,\n className\n )}\n testId={testId}\n inputContainerRef={inputContainerRef}\n value={inputValue}\n onChange={onOpacityInputChange}\n onFocus={openMenuFocus}\n inputType=\"number\"\n inputMode=\"numeric\"\n elementsClassNames={realElementsClassNames}\n htmlAttributes={inputHtmlAttributes}\n />\n\n {/* Popover backdrop is needed for ColorPicker to work better in popovers: click outside will close the ColorPicker but not the popover */}\n <Popover\n ref={popoverRef}\n anchorEl={inputContainerRef.current}\n open={isMenuOpen}\n onClose={closeMenu}\n placement={popoverPlacement}\n className={classNames(\n styles.popover,\n hasVerticalMargin && styles.marginVertical,\n hasHorizontalMargin && styles.marginHorizontal,\n internalValue.a === 0 && styles.isTransparent,\n realElementsClassNames.popover\n )}\n >\n {isSwatches ? (\n <Swatches\n onChange={swatchOnChange}\n value={valueChannels}\n addTransparent={enableAlpha}\n autoFocus={focusTarget === 'palette'}\n onAutoFocus={clearFocusTarget}\n />\n ) : (\n <div ref={pickerRef} className={styles.pickerContainer} onKeyDown={onPickerKeyDown}>\n <ChromePicker\n color={internalValue}\n onChange={onInternalValueChange}\n onChangeComplete={pickerOnChange}\n disableAlpha={!enableAlpha}\n className={styles.picker}\n />\n </div>\n )}\n <div className={styles.switchButtons}>\n <Tooltip title=\"Palette\">\n <ButtonIcon\n ariaLabel=\"Show color palette\"\n size=\"medium\"\n type={isSwatches ? 'secondary' : 'tertiary'}\n onClick={setSwatches}\n >\n <PaletteIcon />\n </ButtonIcon>\n </Tooltip>\n <Tooltip title=\"Pick your own\">\n <ButtonIcon\n ariaLabel=\"Show custom color picker\"\n size=\"medium\"\n type={!isSwatches ? 'secondary' : 'tertiary'}\n onClick={setPicker}\n >\n <PickerIcon />\n </ButtonIcon>\n </Tooltip>\n </div>\n </Popover>\n\n {/* Opacity Drag Tracker should work even with popover open with a backdrop */}\n {isMenuOpen && enableAlpha && !disableOpacityDrag && (\n <Popper\n open={isMenuOpen}\n anchorEl={inputContainerRef.current}\n className={styles.dragTrackerPopper}\n placement=\"right\"\n >\n <OpacityDragTracker onDrag={onOpacityDrag} onDragEnd={onOpacityDragEnd} />\n </Popper>\n )}\n </>\n );\n};\n"],"names":["SizeToClassMap","small","styles","medium","large","ownInputElementsClassNames","inputContainer","numberStepButtons","prefix","prefixContainer","suffix","suffixContainer","input","label","ColorPicker","_ref","_ref$format","format","className","_ref$labelPlacement","labelPlacement","_ref$popoverPlacement","popoverPlacement","testId","disabled","_ref$size","size","onOpen","onClose","_ref$value","value","defaultColor","onChange","disableOpacityDrag","_ref$enableAlpha","enableAlpha","elementsClassNames","valueChannels","useMemo","channels","parseColor","_objectSpread","a","_","realElementsClassNames","Object","entries","reduce","acc","pair","_ref3","_slicedToArray","key","classNames","useState","_useState2","_useState","isMenuOpen","setIsOpen","inputContainerRef","useRef","indicatorRef","_useState4","_useState3","isSwatches","setIsSwatches","_useState6","_useState5","focusTarget","setFocusTarget","_useState8","_useState7","internalValue","setInternalValue","popoverRef","accessibilityId","concat","uuidv4","inputId","labelId","opacityLabelId","hasLabel","Boolean","openMenu","useCallback","openMenuSwatch","e","preventDefault","openMenuFocus","openMenuKeyDown","event","closeMenu","_popoverRef$current","_indicatorRef$current","isFocusInPopover","current","contains","document","activeElement","focus","preventScroll","setSwatches","detail","setPicker","clearFocusTarget","onInternalValueChange","color","rgb","onActualChange","formatted","channelsToHex","channelsToRgba","onKeyboardPickerChange","_useChromePickerAcces","useChromePickerAccessibility","isActive","pickerRef","onPickerKeyDown","onKeyDown","useEffect","_pickerRef$current","firstControl","querySelector","onOpacityInputChange","opacityString","opacityNumber","Number","isNaN","pickerOnChange","swatchOnChange","nonZeroAlpha","alpha","onOpacityDragEnd","setTimeout","_document$activeEleme","_document$activeEleme2","blur","call","onOpacityDrag","throttle","percent","newFieldValue","String","Math","round","inputValue","hasVerticalMargin","startsWith","hasHorizontalMargin","accessibleLabel","_jsxs","_Fragment","children","_jsx","id","htmlFor","TextInputNext","Label","hidden","undefined","inputHtmlAttributes","rootTagName","fakeValue","fakeValuePercent","ref","indicator","transparent","style","onClick","role","tabIndex","OpacityDragTracker","onDrag","onDragEnd","root","noAlpha","onFocus","inputType","inputMode","htmlAttributes","Popover","anchorEl","open","placement","popover","marginVertical","marginHorizontal","isTransparent","Swatches","addTransparent","autoFocus","onAutoFocus","pickerContainer","ChromePicker","onChangeComplete","disableAlpha","picker","switchButtons","Tooltip","title","ButtonIcon","ariaLabel","type","PaletteIcon","PickerIcon","Popper","dragTrackerPopper"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerNext.stories.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/DatePickerNext.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAGrB,CAAC;eAkCa,IAAI;AAEnB,eAAO,MAAM,OAAO,UAAW,KAAK,4CAcnC,CAAC;AAEF,eAAO,MAAM,KAAK,+CAUjB,CAAC;AASF,eAAO,MAAM,cAAc,+CAyB1B,CAAC;AASF,eAAO,MAAM,UAAU,+CActB,CAAC;AAmBF,eAAO,MAAM,MAAM,+CAclB,CAAC;AAMF,eAAO,MAAM,aAAa,+CAczB,CAAC;AAOF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAMF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAKF,eAAO,MAAM,cAAc,+CAkB1B,CAAC;AAOF,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
1
+ {"version":3,"file":"DatePickerNext.stories.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/DatePicker/DatePickerNext.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAyB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,KAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAGrB,CAAC;eAkCa,IAAI;AAEnB,eAAO,MAAM,OAAO,UAAW,KAAK,4CAcnC,CAAC;AAEF,eAAO,MAAM,KAAK,+CAUjB,CAAC;AASF,eAAO,MAAM,cAAc,+CAyB1B,CAAC;AASF,eAAO,MAAM,UAAU,+CActB,CAAC;AAmBF,eAAO,MAAM,MAAM,+CAsBlB,CAAC;AAMF,eAAO,MAAM,aAAa,+CAczB,CAAC;AAOF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAMF,eAAO,MAAM,eAAe,+CAI3B,CAAC;AAKF,eAAO,MAAM,cAAc,+CAkB1B,CAAC;AAOF,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
1
+ import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/toConsumableArray";import{forwardRef as c,useState as i,useRef as t,useCallback as r,useMemo as e,useEffect as m}from"react";import u from"moment";import a from"classnames";import{TextInputNext as l}from"../../TextInputNext/TextInputNext.js";import{TextInput as p}from"../../TextInput/TextInput.js";import{autocompleteValue as j,getMinDate as I,getMaxDate as d,InputParseFormats as f,getDefaultFormat as v}from"../utils.js";import{Popper as b}from"../../Popper/Popper.js";import h from"./Input.scss.js";import{CalendarThreeIcon as O}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as C,Fragment as g,jsx as y}from"react/jsx-runtime";function P(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function F(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?P(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):P(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var x={flip:{enabled:!1}},A=function(o,s){return o?u(o).format(s):s},D=function(o,s){return(Array.isArray(o)?o:[o]).filter((function(o){return!!o})).map((function(o){return A(o,s)})).join(" - ")},N=function(o,s,c){var i=u(o,[s].concat(n(f[c]||[])),!0);return i.isValid()?i.toDate():void 0},S={small:h.small,medium:h.medium,large:h.large},k=c((function(o,n){var c=o.value,u=o.label,f=o.open,P=o.className,k=o.testId,R=o.format,T=o.placeholder,w=o.range,E=o.readOnly,M=o.type,z=o.setValue,B=o.focusOnClear,L=o.labelPlacement,G=o.size,U=void 0===G?"small":G,V=o.elementsClassNames,q=o.isNext,W=o.isOpen,K=o.clearable,Z=o.rangeStep,H=o.setRangeStep,J=R||v(M,w),Q=D(c,J),X=i(Q),Y=s(X,2),$=Y[0],_=Y[1],oo=i(c),so=s(oo,2),no=so[0],co=so[1],io=t($),to=i(0),ro=s(to,2),eo=ro[0],mo=ro[1],uo=i(0),ao=s(uo,2),lo=ao[0],po=ao[1],jo=t(null),Io=!!w&&$===Q&&W;no!==c&&(_(Q),co(c),io.current=Q);var fo=r((function(o){if(""===o.trim())return null==z||z(void 0),_(""),void(io.current="");var s=j({type:M,range:w,value:o,prevValue:io.current});if(io.current=s,_(s),w){var n=s.split(/[-–—]/).map((function(o){return N(o.trim(),J,M)})).filter((function(o){return!!o}));if(2===n.length){var c=I(n[0],n[1]),i=d(n[0],n[1]);c&&i&&(null==z||z([c,i]))}}else{var t=N(s,J,M);t&&(null==z||z(t))}}),[J,w,z,M]),vo=r((function(o){o.target.select(),f()}),[f]),bo=r((function(){_(D(c,J)),io.current=""}),[c,J]),ho=r((function(){null==z||z(void 0),_("")}),[z]),Oo=e((function(){return F(F({},V),{},{prefix:a(null==V?void 0:V.prefix,Io&&h.prefix),input:a(null==V?void 0:V.input,Io&&h.rangeDefaultValue),inputContainer:a(null==V?void 0:V.inputContainer,h.inputContainer)})}),[Io,V]),Co=e((function(){return w?{onScroll:function(o){mo(o.currentTarget.scrollLeft)}}:void 0}),[w]);return m((function(){if(w){var o=new ResizeObserver((function(o){o.forEach((function(o){var s,n;return po((null===(s=o.borderBoxSize)||void 0===s||null===(n=s[0])||void 0===n?void 0:n.inlineSize)||0)}))}));return jo.current&&o.observe(jo.current),function(){o.disconnect()}}}),[w]),q?C(g,{children:[y(l,{value:$,inputContainerRef:n,inputRef:jo,label:u,onFocus:vo,onBlur:bo,className:P,testId:k,suffix:y(O,{}),placeholder:Io?"":T,onChange:fo,readOnly:E,clearable:K,focusOnClear:B,labelPlacement:L,size:U,elementsClassNames:Oo,htmlAttributes:Co}),y(b,{anchorEl:jo.current,open:Io,placement:"top-start",className:h.popper,modifiers:x,children:y("div",{className:a(h.rangeOverlay,S[U]),style:{width:lo},children:y("div",{style:{marginLeft:-eo},children:Array.isArray(c)&&2===c.length&&C(g,{children:[y("span",{className:a(h.rangePart,"startDate"===Z&&h.rangePartActive),onClick:function(){return H("startDate")},children:A(c[0],J)})," - ",y("span",{className:a(h.rangePart,"endDate"===Z&&h.rangePartActive),onClick:function(){return H("endDate")},children:A(c[1],J)})]})})})})]}):y(p,{value:$,ref:n,label:u,onFocus:f,onBlur:bo,forceLabelShrink:W,className:P,testId:k,suffix:y(O,{}),placeholder:T,onChange:fo,readOnly:E,onClear:K?ho:void 0,focusOnClear:B})}));export{k as Input};
2
2
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n forwardRef,\n ReactNode,\n UIEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput } from '../../TextInput';\nimport {\n autocompleteValue,\n DatePickerChangeHandler,\n DatePickerType,\n getDefaultFormat,\n getMaxDate,\n getMinDate,\n RangeSelectionStep,\n InputParseFormats,\n} from '../utils';\nimport { Popper } from '../../Popper';\n\nimport styles from './Input.scss';\n\nimport { CalendarThreeIcon } from '~/icons';\n\nexport type InputProps = {\n value?: Date | [Date | undefined, Date | undefined];\n setValue?: (value: Date | [Date, Date] | undefined) => void;\n label?: ReactNode;\n placeholder?: string;\n open: () => void;\n type: DatePickerType;\n format?: string;\n range?: boolean;\n rangeStep?: RangeSelectionStep;\n setRangeStep: (step: RangeSelectionStep) => void;\n readOnly?: boolean;\n focusOnClear?: boolean;\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n clearable?: TextInputNextProps['clearable'];\n\n className?: string;\n testId?: string;\n\n // Remove when next becomes baseline\n isOpen: boolean;\n isNext: boolean;\n};\n\nconst rangeOverlayPopperModifiers = {\n flip: {\n enabled: false,\n },\n};\n\nconst RangeSeparator = ' - ';\n\nconst formatValuePart = (value: Date | undefined, format: string) =>\n value ? moment(value).format(format) : format;\n\nconst formatValue = (value: InputProps['value'], format: string) =>\n (Array.isArray(value) ? value : [value])\n .filter(item => !!item)\n .map(item => formatValuePart(item, format))\n .join(RangeSeparator);\n\nconst parseStringDate = (value: string, format: string, type: DatePickerType) => {\n const parsedMoment = moment(value, [format, ...(InputParseFormats[type] || [])], true);\n\n return parsedMoment.isValid() ? parsedMoment.toDate() : undefined;\n};\n\nconst SizeToOverlayClassMap: Record<Required<TextInputNextProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(\n (\n {\n value,\n label,\n open,\n className,\n testId,\n format: propsFormat,\n placeholder,\n range,\n readOnly,\n type,\n setValue,\n focusOnClear,\n labelPlacement,\n size = 'small',\n elementsClassNames: propsElementsClassNames,\n isNext,\n isOpen,\n clearable,\n rangeStep,\n setRangeStep,\n },\n ref\n ) => {\n const format = propsFormat || getDefaultFormat(type, range);\n const formattedValue = formatValue(value, format);\n const [inputValue, setInputValue] = useState(formattedValue);\n const [prevValue, setPrevValue] = useState(value);\n const prevInputValueRef = useRef(inputValue);\n const [inputScroll, setinputScroll] = useState(0);\n const [inputWidth, setInputWidth] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const showRangeOverlay = !!range && inputValue === formattedValue && isOpen;\n\n // Value changed - reconstructing input value\n if (prevValue !== value) {\n setInputValue(formattedValue);\n setPrevValue(value);\n prevInputValueRef.current = formattedValue;\n }\n\n const onChange = useCallback(\n (typedValue: string) => {\n if (typedValue.trim() === '') {\n setValue?.(undefined);\n setInputValue('');\n prevInputValueRef.current = '';\n return;\n }\n\n const newValue = autocompleteValue({\n type,\n range,\n value: typedValue,\n prevValue: prevInputValueRef.current,\n });\n\n prevInputValueRef.current = newValue;\n\n setInputValue(newValue);\n if (range) {\n // Splitting by hyphen, or en dash, or em dash\n const dateParts = newValue\n .split(/[-–—]/)\n .map(part => parseStringDate(part.trim(), format, type))\n .filter(part => !!part);\n\n if (dateParts.length === 2) {\n const minDate = getMinDate(dateParts[0], dateParts[1]);\n const maxDate = getMaxDate(dateParts[0], dateParts[1]);\n\n if (minDate && maxDate) {\n (setValue as DatePickerChangeHandler<true>)?.([minDate, maxDate]);\n }\n }\n } else {\n const maybeDate = parseStringDate(newValue, format, type);\n\n if (maybeDate) {\n (setValue as DatePickerChangeHandler<false>)?.(maybeDate);\n }\n }\n },\n [format, range, setValue, type]\n );\n\n const onFocus = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n e.target.select();\n open();\n },\n [open]\n );\n\n const onBlur = useCallback(() => {\n setInputValue(formatValue(value, format));\n prevInputValueRef.current = '';\n }, [value, format]);\n\n const onClear = useCallback(() => {\n setValue?.(undefined);\n setInputValue('');\n }, [setValue]);\n\n const elementsClassNames = useMemo(\n () => ({\n ...propsElementsClassNames,\n prefix: classNames(propsElementsClassNames?.prefix, showRangeOverlay && styles.prefix),\n input: classNames(\n propsElementsClassNames?.input,\n showRangeOverlay && styles.rangeDefaultValue\n ),\n inputContainer: classNames(propsElementsClassNames?.inputContainer, styles.inputContainer),\n }),\n [showRangeOverlay, propsElementsClassNames]\n );\n\n const htmlAttributes = useMemo<{ onScroll: UIEventHandler<HTMLInputElement> } | undefined>(\n () =>\n range\n ? {\n onScroll: e => {\n setinputScroll(e.currentTarget.scrollLeft);\n },\n }\n : undefined,\n [range]\n );\n\n useEffect(() => {\n if (!range) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => setInputWidth(entry.borderBoxSize?.[0]?.inlineSize || 0));\n });\n\n if (inputRef.current) {\n resizeObserver.observe(inputRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [range]);\n\n if (isNext) {\n return (\n <>\n <TextInputNext\n value={inputValue}\n inputContainerRef={ref}\n inputRef={inputRef}\n label={label}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n clearable={clearable}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n />\n\n <Popper\n anchorEl={inputRef.current}\n open={showRangeOverlay}\n placement=\"top-start\"\n className={styles.popper}\n modifiers={rangeOverlayPopperModifiers}\n >\n <div\n className={classNames(styles.rangeOverlay, SizeToOverlayClassMap[size])}\n style={{ width: inputWidth }}\n >\n <div style={{ marginLeft: -inputScroll }}>\n {Array.isArray(value) && value.length === 2 && (\n <>\n <span\n className={classNames(\n styles.rangePart,\n\n rangeStep === 'startDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('startDate')}\n >\n {formatValuePart(value[0], format)}\n </span>\n {RangeSeparator}\n <span\n className={classNames(\n styles.rangePart,\n rangeStep === 'endDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('endDate')}\n >\n {formatValuePart(value[1], format)}\n </span>\n </>\n )}\n </div>\n </div>\n </Popper>\n </>\n );\n }\n\n return (\n <TextInput\n value={inputValue}\n ref={ref as never}\n label={label}\n onFocus={open}\n onBlur={onBlur}\n forceLabelShrink={isOpen}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n onClear={clearable ? onClear : undefined}\n focusOnClear={focusOnClear}\n />\n );\n }\n);\n"],"names":["rangeOverlayPopperModifiers","flip","enabled","formatValuePart","value","format","moment","formatValue","Array","isArray","filter","item","map","join","parseStringDate","type","parsedMoment","concat","_toConsumableArray","InputParseFormats","isValid","toDate","undefined","SizeToOverlayClassMap","small","styles","medium","large","Input","forwardRef","_ref","ref","label","open","className","testId","propsFormat","placeholder","range","readOnly","setValue","focusOnClear","labelPlacement","_ref$size","size","propsElementsClassNames","elementsClassNames","isNext","isOpen","clearable","rangeStep","setRangeStep","getDefaultFormat","formattedValue","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","prevValue","setPrevValue","prevInputValueRef","useRef","_useState6","_useState5","inputScroll","setinputScroll","_useState8","_useState7","inputWidth","setInputWidth","inputRef","showRangeOverlay","current","onChange","useCallback","typedValue","trim","newValue","autocompleteValue","dateParts","split","part","length","minDate","getMinDate","maxDate","getMaxDate","maybeDate","onFocus","e","target","select","onBlur","onClear","useMemo","_objectSpread","prefix","classNames","input","rangeDefaultValue","inputContainer","htmlAttributes","onScroll","currentTarget","scrollLeft","useEffect","resizeObserver","ResizeObserver","entries","forEach","entry","_entry$borderBoxSize","_entry$borderBoxSize$","borderBoxSize","inlineSize","observe","disconnect","_jsxs","_Fragment","children","_jsx","TextInputNext","inputContainerRef","suffix","CalendarThreeIcon","Popper","anchorEl","placement","popper","modifiers","rangeOverlay","style","width","marginLeft","rangePart","rangePartActive","onClick","TextInput","forceLabelShrink"],"mappings":"20KA0DA,IAAMA,EAA8B,CAClCC,KAAM,CACJC,SAAS,IAMPC,EAAkB,SAACC,EAAyBC,GAAc,OAC9DD,EAAQE,EAAOF,GAAOC,OAAOA,GAAUA,CAAM,EAEzCE,EAAc,SAACH,EAA4BC,GAAc,OAC5DG,MAAMC,QAAQL,GAASA,EAAQ,CAACA,IAC9BM,QAAO,SAAAC,GAAI,QAAMA,CAAI,IACrBC,KAAI,SAAAD,GAAI,OAAIR,EAAgBQ,EAAMN,EAAO,IACzCQ,KATkB,MASE,EAEnBC,EAAkB,SAACV,EAAeC,EAAgBU,GACtD,IAAMC,EAAeV,EAAOF,GAAQC,GAAMY,OAAAC,EAAMC,EAAkBJ,IAAS,MAAM,GAEjF,OAAOC,EAAaI,UAAYJ,EAAaK,cAAWC,CAC1D,EAEMC,EAA8E,CAClFC,MAAOC,EAAOD,MACdE,OAAQD,EAAOC,OACfC,MAAOF,EAAOE,OAGHC,EAAQC,GACnB,SAAAC,EAuBEC,GACG,IAtBD3B,IAAAA,MACA4B,IAAAA,MACAC,IAAAA,KACAC,IAAAA,UACAC,IAAAA,OACQC,IAAR/B,OACAgC,IAAAA,YACAC,IAAAA,MACAC,IAAAA,SACAxB,IAAAA,KACAyB,IAAAA,SACAC,IAAAA,aACAC,IAAAA,eAAcC,EAAAb,EACdc,KAAAA,aAAO,QAAOD,EACME,IAApBC,mBACAC,IAAAA,OACAC,IAAAA,OACAC,IAAAA,UACAC,IAAAA,UACAC,IAAAA,aAII9C,EAAS+B,GAAegB,EAAiBrC,EAAMuB,GAC/Ce,EAAiB9C,EAAYH,EAAOC,GACNiD,EAAAA,EAASD,GAAeE,EAAAC,EAAAC,EAAA,GAArDC,EAAUH,EAAA,GAAEI,EAAaJ,EAAA,GACED,GAAAA,EAASlD,GAAMwD,GAAAJ,EAAAK,GAAA,GAA1CC,GAASF,GAAA,GAAEG,GAAYH,GAAA,GACxBI,GAAoBC,EAAOP,GACKJ,GAAAA,EAAS,GAAEY,GAAAV,EAAAW,GAAA,GAA1CC,GAAWF,GAAA,GAAEG,GAAcH,GAAA,GACEZ,GAAAA,EAAS,GAAEgB,GAAAd,EAAAe,GAAA,GAAxCC,GAAUF,GAAA,GAAEG,GAAaH,GAAA,GAC1BI,GAAWT,EAAyB,MACpCU,KAAqBrC,GAASoB,IAAeL,GAAkBL,EAGjEc,KAAc1D,IAChBuD,EAAcN,GACdU,GAAa3D,GACb4D,GAAkBY,QAAUvB,GAG9B,IAAMwB,GAAWC,GACf,SAACC,GACC,GAA0B,KAAtBA,EAAWC,OAIb,OAHAxC,SAAAA,OAAWlB,GACXqC,EAAc,SACdK,GAAkBY,QAAU,IAI9B,IAAMK,EAAWC,EAAkB,CACjCnE,KAAAA,EACAuB,MAAAA,EACAlC,MAAO2E,EACPjB,UAAWE,GAAkBY,UAM/B,GAHAZ,GAAkBY,QAAUK,EAE5BtB,EAAcsB,GACV3C,EAAO,CAET,IAAM6C,EAAYF,EACfG,MAAM,SACNxE,KAAI,SAAAyE,GAAI,OAAIvE,EAAgBuE,EAAKL,OAAQ3E,EAAQU,EAAK,IACtDL,QAAO,SAAA2E,GAAI,QAAMA,KAEpB,GAAyB,IAArBF,EAAUG,OAAc,CAC1B,IAAMC,EAAUC,EAAWL,EAAU,GAAIA,EAAU,IAC7CM,EAAUC,EAAWP,EAAU,GAAIA,EAAU,IAE/CI,GAAWE,IACZjD,SAAAA,EAA6C,CAAC+C,EAASE,IAE5D,CACF,KAAO,CACL,IAAME,EAAY7E,EAAgBmE,EAAU5E,EAAQU,GAEhD4E,IACDnD,SAAAA,EAA8CmD,GAEnD,CACD,GACD,CAACtF,EAAQiC,EAAOE,EAAUzB,IAGtB6E,GAAUd,GACd,SAAAe,GACEA,EAAEC,OAAOC,SACT9D,GACF,GACA,CAACA,IAGG+D,GAASlB,GAAY,WACzBnB,EAAcpD,EAAYH,EAAOC,IACjC2D,GAAkBY,QAAU,EAC9B,GAAG,CAACxE,EAAOC,IAEL4F,GAAUnB,GAAY,WAC1BtC,SAAAA,OAAWlB,GACXqC,EAAc,GAChB,GAAG,CAACnB,IAEEM,GAAqBoD,GACzB,WAAA,OAAAC,EAAAA,EAAA,CAAA,EACKtD,GAAuB,CAAA,EAAA,CAC1BuD,OAAQC,EAAWxD,aAAAA,EAAAA,EAAyBuD,OAAQzB,IAAoBlD,EAAO2E,QAC/EE,MAAOD,EACLxD,aAAAA,EAAAA,EAAyByD,MACzB3B,IAAoBlD,EAAO8E,mBAE7BC,eAAgBH,EAAWxD,aAAAA,EAAAA,EAAyB2D,eAAgB/E,EAAO+E,iBAAe,GAE5F,CAAC7B,GAAkB9B,IAGf4D,GAAiBP,GACrB,WAAA,OACE5D,EACI,CACEoE,SAAU,SAAAb,GACRxB,GAAewB,EAAEc,cAAcC,WACjC,QAEFtF,IACN,CAACgB,IAqBH,OAlBAuE,GAAU,WACR,GAAKvE,EAAL,CAIA,IAAMwE,EAAiB,IAAIC,gBAAe,SAAAC,GACxCA,EAAQC,SAAQ,SAAAC,GAAK,IAAAC,EAAAC,EAAA,OAAI3C,IAAiC,QAAnByC,EAAAA,EAAMG,qBAAa,IAAAF,GAAnB,QAAmBC,EAAnBD,EAAsB,UAAtB,IAAAC,OAAmB,EAAnBA,EAA0BE,aAAc,KACjF,IAMA,OAJI5C,GAASE,SACXkC,EAAeS,QAAQ7C,GAASE,SAG3B,WACLkC,EAAeU,aAXjB,CAaF,GAAG,CAAClF,IAEAS,EAEA0E,EAAAC,EAAA,CAAAC,SAAA,CACEC,EAACC,EAAa,CACZzH,MAAOsD,EACPoE,kBAAmB/F,EACnB2C,SAAUA,GACV1C,MAAOA,EACP4D,QAASA,GACTI,OAAQA,GACR9D,UAAWA,EACXC,OAAQA,EACR4F,OAAQH,EAACI,EAAqB,IAC9B3F,YAAaA,EACbwC,SAAUA,GACVtC,SAAUA,EACVU,UAAWA,EACXR,aAAcA,EACdC,eAAgBA,EAChBE,KAAMA,EACNE,mBAAoBA,GACpB2D,eAAgBA,KAGlBmB,EAACK,EAAM,CACLC,SAAUxD,GAASE,QACnB3C,KAAM0C,GACNwD,UAAU,YACVjG,UAAWT,EAAO2G,OAClBC,UAAWrI,EAA4B2H,SAEvCC,EAAA,MAAA,CACE1F,UAAWmE,EAAW5E,EAAO6G,aAAc/G,EAAsBqB,IACjE2F,MAAO,CAAEC,MAAOhE,IAAamD,SAE7BC,EAAA,MAAA,CAAKW,MAAO,CAAEE,YAAarE,IAAcuD,SACtCnH,MAAMC,QAAQL,IAA2B,IAAjBA,EAAMkF,QAC7BmC,EAAAC,EAAA,CAAAC,SACE,CAAAC,EAAA,OAAA,CACE1F,UAAWmE,EACT5E,EAAOiH,UAEO,cAAdxF,GAA6BzB,EAAOkH,iBAEtCC,QAAS,WAAA,OAAMzF,EAAa,YAAa,EAAAwE,SAExCxH,EAAgBC,EAAM,GAAIC,KA1N1B,MA6NHuH,EAAA,OAAA,CACE1F,UAAWmE,EACT5E,EAAOiH,UACO,YAAdxF,GAA2BzB,EAAOkH,iBAEpCC,QAAS,WAAA,OAAMzF,EAAa,UAAW,EAAAwE,SAEtCxH,EAAgBC,EAAM,GAAIC,iBAY3CuH,EAACiB,EAAS,CACRzI,MAAOsD,EACP3B,IAAKA,EACLC,MAAOA,EACP4D,QAAS3D,EACT+D,OAAQA,GACR8C,iBAAkB9F,EAClBd,UAAWA,EACXC,OAAQA,EACR4F,OAAQH,EAACI,EAAqB,IAC9B3F,YAAaA,EACbwC,SAAUA,GACVtC,SAAUA,EACV0D,QAAShD,EAAYgD,QAAU3E,EAC/BmB,aAAcA,GAGpB"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/componentsV2/DatePicker/Input/Input.tsx"],"sourcesContent":["import {\n FocusEventHandler,\n forwardRef,\n ReactNode,\n UIEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nimport { TextInputNext, TextInputNextProps } from '../../TextInputNext';\nimport { TextInput } from '../../TextInput';\nimport {\n autocompleteValue,\n DatePickerChangeHandler,\n DatePickerType,\n getDefaultFormat,\n getMaxDate,\n getMinDate,\n RangeSelectionStep,\n InputParseFormats,\n} from '../utils';\nimport { Popper } from '../../Popper';\n\nimport styles from './Input.scss';\n\nimport { CalendarThreeIcon } from '~/icons';\n\nexport type InputProps = {\n value?: Date | [Date | undefined, Date | undefined];\n setValue?: (value: Date | [Date, Date] | undefined) => void;\n label?: ReactNode;\n placeholder?: string;\n open: () => void;\n type: DatePickerType;\n format?: string;\n range?: boolean;\n rangeStep?: RangeSelectionStep;\n setRangeStep: (step: RangeSelectionStep) => void;\n readOnly?: boolean;\n focusOnClear?: boolean;\n labelPlacement?: TextInputNextProps['labelPlacement'];\n size?: TextInputNextProps['size'];\n elementsClassNames?: TextInputNextProps['elementsClassNames'];\n clearable?: TextInputNextProps['clearable'];\n\n className?: string;\n testId?: string;\n\n // Remove when next becomes baseline\n isOpen: boolean;\n isNext: boolean;\n};\n\nconst rangeOverlayPopperModifiers = {\n flip: {\n enabled: false,\n },\n};\n\nconst RangeSeparator = ' - ';\n\nconst formatValuePart = (value: Date | undefined, format: string) =>\n value ? moment(value).format(format) : format;\n\nconst formatValue = (value: InputProps['value'], format: string) =>\n (Array.isArray(value) ? value : [value])\n .filter(item => !!item)\n .map(item => formatValuePart(item, format))\n .join(RangeSeparator);\n\nconst parseStringDate = (value: string, format: string, type: DatePickerType) => {\n const parsedMoment = moment(value, [format, ...(InputParseFormats[type] || [])], true);\n\n return parsedMoment.isValid() ? parsedMoment.toDate() : undefined;\n};\n\nconst SizeToOverlayClassMap: Record<Required<TextInputNextProps>['size'], string> = {\n small: styles.small,\n medium: styles.medium,\n large: styles.large,\n};\n\nexport const Input = forwardRef<HTMLDivElement, InputProps>(\n (\n {\n value,\n label,\n open,\n className,\n testId,\n format: propsFormat,\n placeholder,\n range,\n readOnly,\n type,\n setValue,\n focusOnClear,\n labelPlacement,\n size = 'small',\n elementsClassNames: propsElementsClassNames,\n isNext,\n isOpen,\n clearable,\n rangeStep,\n setRangeStep,\n },\n ref\n ) => {\n const format = propsFormat || getDefaultFormat(type, range);\n const formattedValue = formatValue(value, format);\n const [inputValue, setInputValue] = useState(formattedValue);\n const [prevValue, setPrevValue] = useState(value);\n const prevInputValueRef = useRef(inputValue);\n const [inputScroll, setinputScroll] = useState(0);\n const [inputWidth, setInputWidth] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const showRangeOverlay = !!range && inputValue === formattedValue && isOpen;\n\n // Value changed - reconstructing input value\n if (prevValue !== value) {\n setInputValue(formattedValue);\n setPrevValue(value);\n prevInputValueRef.current = formattedValue;\n }\n\n const onChange = useCallback(\n (typedValue: string) => {\n if (typedValue.trim() === '') {\n setValue?.(undefined);\n setInputValue('');\n prevInputValueRef.current = '';\n return;\n }\n\n const newValue = autocompleteValue({\n type,\n range,\n value: typedValue,\n prevValue: prevInputValueRef.current,\n });\n\n prevInputValueRef.current = newValue;\n\n setInputValue(newValue);\n if (range) {\n // Splitting by hyphen, or en dash, or em dash\n const dateParts = newValue\n .split(/[-–—]/)\n .map(part => parseStringDate(part.trim(), format, type))\n .filter(part => !!part);\n\n if (dateParts.length === 2) {\n const minDate = getMinDate(dateParts[0], dateParts[1]);\n const maxDate = getMaxDate(dateParts[0], dateParts[1]);\n\n if (minDate && maxDate) {\n (setValue as DatePickerChangeHandler<true>)?.([minDate, maxDate]);\n }\n }\n } else {\n const maybeDate = parseStringDate(newValue, format, type);\n\n if (maybeDate) {\n (setValue as DatePickerChangeHandler<false>)?.(maybeDate);\n }\n }\n },\n [format, range, setValue, type]\n );\n\n const onFocus = useCallback<FocusEventHandler<HTMLInputElement>>(\n e => {\n e.target.select();\n open();\n },\n [open]\n );\n\n const onBlur = useCallback(() => {\n setInputValue(formatValue(value, format));\n prevInputValueRef.current = '';\n }, [value, format]);\n\n const onClear = useCallback(() => {\n setValue?.(undefined);\n setInputValue('');\n }, [setValue]);\n\n const elementsClassNames = useMemo(\n () => ({\n ...propsElementsClassNames,\n prefix: classNames(propsElementsClassNames?.prefix, showRangeOverlay && styles.prefix),\n input: classNames(\n propsElementsClassNames?.input,\n showRangeOverlay && styles.rangeDefaultValue\n ),\n inputContainer: classNames(propsElementsClassNames?.inputContainer, styles.inputContainer),\n }),\n [showRangeOverlay, propsElementsClassNames]\n );\n\n const htmlAttributes = useMemo<{ onScroll: UIEventHandler<HTMLInputElement> } | undefined>(\n () =>\n range\n ? {\n onScroll: e => {\n setinputScroll(e.currentTarget.scrollLeft);\n },\n }\n : undefined,\n [range]\n );\n\n useEffect(() => {\n if (!range) {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => setInputWidth(entry.borderBoxSize?.[0]?.inlineSize || 0));\n });\n\n if (inputRef.current) {\n resizeObserver.observe(inputRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [range]);\n\n if (isNext) {\n return (\n <>\n <TextInputNext\n value={inputValue}\n inputContainerRef={ref}\n inputRef={inputRef}\n label={label}\n onFocus={onFocus}\n onBlur={onBlur}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={showRangeOverlay ? '' : placeholder}\n onChange={onChange}\n readOnly={readOnly}\n clearable={clearable}\n focusOnClear={focusOnClear}\n labelPlacement={labelPlacement}\n size={size}\n elementsClassNames={elementsClassNames}\n htmlAttributes={htmlAttributes}\n />\n\n <Popper\n anchorEl={inputRef.current}\n open={showRangeOverlay}\n placement=\"top-start\"\n className={styles.popper}\n modifiers={rangeOverlayPopperModifiers}\n >\n <div\n className={classNames(styles.rangeOverlay, SizeToOverlayClassMap[size])}\n style={{ width: inputWidth }}\n >\n <div style={{ marginLeft: -inputScroll }}>\n {Array.isArray(value) && value.length === 2 && (\n <>\n <span\n className={classNames(\n styles.rangePart,\n\n rangeStep === 'startDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('startDate')}\n >\n {formatValuePart(value[0], format)}\n </span>\n {RangeSeparator}\n <span\n className={classNames(\n styles.rangePart,\n rangeStep === 'endDate' && styles.rangePartActive\n )}\n onClick={() => setRangeStep('endDate')}\n >\n {formatValuePart(value[1], format)}\n </span>\n </>\n )}\n </div>\n </div>\n </Popper>\n </>\n );\n }\n\n return (\n <TextInput\n value={inputValue}\n ref={ref as never}\n label={label}\n onFocus={open}\n onBlur={onBlur}\n forceLabelShrink={isOpen}\n className={className}\n testId={testId}\n suffix={<CalendarThreeIcon />}\n placeholder={placeholder}\n onChange={onChange}\n readOnly={readOnly}\n onClear={clearable ? onClear : undefined}\n focusOnClear={focusOnClear}\n />\n );\n }\n);\n"],"names":["rangeOverlayPopperModifiers","flip","enabled","formatValuePart","value","format","moment","formatValue","Array","isArray","filter","item","map","join","parseStringDate","type","parsedMoment","concat","_toConsumableArray","InputParseFormats","isValid","toDate","undefined","SizeToOverlayClassMap","small","styles","medium","large","Input","forwardRef","_ref","ref","label","open","className","testId","propsFormat","placeholder","range","readOnly","setValue","focusOnClear","labelPlacement","_ref$size","size","propsElementsClassNames","elementsClassNames","isNext","isOpen","clearable","rangeStep","setRangeStep","getDefaultFormat","formattedValue","useState","_useState2","_slicedToArray","_useState","inputValue","setInputValue","_useState4","_useState3","prevValue","setPrevValue","prevInputValueRef","useRef","_useState6","_useState5","inputScroll","setinputScroll","_useState8","_useState7","inputWidth","setInputWidth","inputRef","showRangeOverlay","current","onChange","useCallback","typedValue","trim","newValue","autocompleteValue","dateParts","split","part","length","minDate","getMinDate","maxDate","getMaxDate","maybeDate","onFocus","e","target","select","onBlur","onClear","useMemo","_objectSpread","prefix","classNames","input","rangeDefaultValue","inputContainer","htmlAttributes","onScroll","currentTarget","scrollLeft","useEffect","resizeObserver","ResizeObserver","entries","forEach","entry","_entry$borderBoxSize","_entry$borderBoxSize$","borderBoxSize","inlineSize","observe","disconnect","_jsxs","_Fragment","children","_jsx","TextInputNext","inputContainerRef","suffix","CalendarThreeIcon","Popper","anchorEl","placement","popper","modifiers","rangeOverlay","style","width","marginLeft","rangePart","rangePartActive","onClick","TextInput","forceLabelShrink"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAwBA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAoBF,eAAO,MAAM,UAAU,uEAQpB,eAAe,4CAwRjB,CAAC"}
1
+ {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/DatePicker/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAcA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAYF,eAAO,MAAM,UAAU,uEAQpB,eAAe,4CA0OjB,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import{useRef as n,useMemo as c,useState as i,useEffect as t,useCallback as e}from"react";import r from"classnames";import m from"moment-timezone";import{padStart as u}from"lodash";import{TextInputNext as a}from"../../TextInputNext/TextInputNext.js";import{Text as l}from"../../Text/Text.js";import{ToggleButtons as p}from"../../ToggleButtons/ToggleButtons.js";import{isSameDay as d}from"../utils.js";import{Button as j}from"../../Button/Button.js";import I from"./TimePicker.scss.js";import{InfoIcon as f}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as h,Fragment as v,jsx as b}from"react/jsx-runtime";function g(o,s){var n=Object.keys(o);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(o);s&&(c=c.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),n.push.apply(n,c)}return n}function O(s){for(var n=1;n<arguments.length;n++){var c=null!=arguments[n]?arguments[n]:{};n%2?g(Object(c),!0).forEach((function(n){o(s,n,c[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(c)):g(Object(c)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(c,o))}))}return s}var C=[{value:"am",label:"AM"},{value:"pm",label:"PM"}],y=function(o){return o.replace(/[^\d]/g,"").substring(0,2)},T=function(o){return Number(o)>=0&&Number(o)<=12},N=function(o){return Number(o)>=0&&Number(o)<60},P=N,F=function(o){return o.getTime()-m(o).startOf("day").toDate().getTime()},D=function(o){return void 0!==o?u(String(o),2,"0"):""},M=function(o){return"12"===o?"00":o},x=function(o){var u=o.value,g=o.onChange,x=o.minDate,A=o.maxDate,k=o.saveTime,S=o.goToToday,z=o.clear,B=!u,R=n(null),w=n(null),E=n(null),H=n(),G=c((function(){var o=u?F(u)>=432e5?"pm":"am":void 0,s="pm"===o?12:0,n=u?u.getHours()-s:void 0;return{hours:D(void 0!==n&&12===n?0:n),minutes:D(null==u?void 0:u.getMinutes()),seconds:D(null==u?void 0:u.getSeconds()),partOfDay:o}}),[u]),U=i(G.hours),q=s(U,2),L=q[0],W=q[1],K=i(G.minutes),Z=s(K,2),J=Z[0],Q=Z[1],V=i(G.seconds),X=s(V,2),Y=X[0],$=X[1];t((function(){H.current!==R.current&&W(G.hours),H.current!==w.current&&Q(G.minutes),H.current!==E.current&&$(G.seconds)}),[G.hours,G.minutes,G.seconds]);var _=c((function(){var o=d(x,u)&&m(x).format("hh:mm:ss A"),s=d(A,u)&&m(A).format("hh:mm:ss A");return o&&s?"In ".concat(o," - ").concat(s," range"):o?"Can’t be earlier than ".concat(o):s?"Can’t be later than ".concat(s):void 0}),[A,x,u]),oo=c((function(){return C.map((function(o){var s="am"===o.value&&!!x&&d(u,x)&&F(x)>=432e5,n="pm"===o.value&&!!A&&d(u,A)&&F(A)<432e5;return O(O({},o),{},{disabled:B||s||n})}))}),[B,A,x,u]),so=e((function(o,s){if(u){var n=new Date(u);if("hours"===o&&T(s)){var c="pm"===G.partOfDay?12:0;n.setHours(c+Number(s))}else if("minutes"===o&&N(s))n.setMinutes(Number(s));else if("seconds"===o&&P(s))n.setSeconds(Number(s));else if("partOfDay"===o&&("am"===s||"pm"===s)){var i=n.getHours()%12;n.setHours(("pm"===s?12:0)+i)}Math.floor(n.getTime()/1e3)!==Math.floor(u.getTime()/1e3)&&g(n)}}),[G.partOfDay,g,u]),no=e((function(o){o.target.select(),H.current=o.target}),[]),co=e((function(o){var s=y(o.target.value);if(o.target===R.current){var n=M(s),c=T(n)?D(n):G.hours;W(c),so("hours",c)}if(o.target===w.current){var i=N(s)?D(s):G.minutes;Q(i),so("minutes",i)}if(o.target===E.current){var t=P(s)?D(s):G.seconds;$(t),so("seconds",t)}H.current=void 0}),[G.hours,G.minutes,G.seconds,so]),io=e((function(o){var s,n=y(o),c=M(n);(W(n),2===n.length&&T(n))&&(so("hours",c),null===(s=w.current)||void 0===s||s.focus())}),[so]),to=e((function(o){var s,n=y(o);(Q(n),2===n.length&&N(n))&&(so("minutes",n),null===(s=E.current)||void 0===s||s.focus())}),[so]),eo=e((function(o){var s=y(o);$(s),P(s)&&so("seconds",s)}),[so]),ro=e((function(o){so("partOfDay",o)}),[so]),mo=Number(null==u?void 0:u.getTime())>Number(null==A?void 0:A.getTime())||Number(null==u?void 0:u.getTime())<Number(null==x?void 0:x.getTime()),uo=!T(L)||mo,ao=!N(J)||mo,lo=!P(Y)||mo;return h(v,{children:[h("div",{className:r(I.timePicker),children:[h(l,{className:I.header,size:14,children:[b("span",{className:r(I.headerText,B&&I.disabled),children:"Time"}),_&&h(v,{children:[b(f,{className:I.constraintIcon,size:16}),_]})]}),b(a,{placeholder:"HH",className:I.input,disabled:B,value:L,onChange:io,status:uo?"error":void 0,inputRef:R,onFocus:no,onBlur:co}),b(l,{color:"T9",size:14,children:":"}),b(a,{placeholder:"MM",className:I.input,disabled:B,value:J,onChange:to,status:ao?"error":void 0,inputRef:w,onFocus:no,onBlur:co}),b(l,{color:"T9",size:14,children:":"}),b(a,{placeholder:"SS",className:I.input,disabled:B,value:Y,onChange:eo,status:lo?"error":void 0,inputRef:E,onFocus:no,onBlur:co}),b(p,{options:oo,className:I.tabs,size:"small",value:G.partOfDay,onChange:ro})]}),h("div",{className:I.footer,children:[S&&b(j,{onClick:S,type:"tertiary",size:"small",children:"Today"}),h("div",{className:I.actions,children:[z&&b(j,{onClick:z,type:"tertiary",size:"small",disabled:!u,children:"Clear"}),b(j,{onClick:k,type:"secondary",size:"small",disabled:!u||uo||ao||lo,children:"Save"})]})]})]})};export{x as TimePicker};
1
+ import o from"@babel/runtime/helpers/slicedToArray";import{useRef as s,useMemo as n,useState as c,useEffect as i,useCallback as t}from"react";import r from"classnames";import e from"moment-timezone";import{padStart as m}from"lodash";import{TextInputNext as u}from"../../TextInputNext/TextInputNext.js";import{Text as a}from"../../Text/Text.js";import{isSameDay as l}from"../utils.js";import{Button as p}from"../../Button/Button.js";import d from"./TimePicker.scss.js";import{InfoIcon as I}from"../../../icons/iconParkIcons.js";import"../../../icons/customIcons/icons/AddMessage.js";import"../../../icons/customIcons/icons/DragOne.js";import"../../../icons/customIcons/icons/Attention.js";import"../../../icons/customIcons/icons/Collapse.js";import"../../../icons/customIcons/icons/Dashboard.js";import"../../../icons/customIcons/icons/Expand.js";import"../../../icons/customIcons/icons/FolderClosed.js";import"../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../icons/customIcons/icons/FolderOpened.js";import"../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../icons/customIcons/icons/LessOrEqual.js";import"../../../icons/customIcons/icons/Search.js";import"../../../icons/customIcons/icons/SearchOne.js";import"../../../icons/customIcons/icons/Wellhub.js";import"../../../icons/customIcons/icons/MultiRuler.js";import"../../../icons/customIcons/icons/Checkbox.js";import"../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../icons/customIcons/icons/Radio.js";import"../../../icons/customIcons/icons/RadioChecked.js";import"../../../icons/customIcons/icons/SimulFrac.js";import"../../../icons/customIcons/icons/ZipperFrac.js";import"../../../icons/customIcons/icons/CautionFilled.js";import"../../../icons/customIcons/icons/InfoRounded.js";import"../../../icons/customIcons/icons/FlameFilled.js";import"../../../icons/customIcons/icons/MoreApp.js";import"../../../icons/customIcons/icons/Pad.js";import"../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../icons/customIcons/icons/FracFleet.js";import"../../../icons/customIcons/icons/Global.js";import"../../../icons/customIcons/icons/Program.js";import"../../../icons/customIcons/icons/Rig.js";import"../../../icons/customIcons/icons/Well.js";import"../../../icons/customIcons/icons/Gap.js";import"../../../icons/customIcons/icons/Pin.js";import"../../../icons/customIcons/icons/PinOne.js";import"../../../icons/customIcons/icons/PinOneCrossed.js";import"../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../icons/customIcons/icons/AttentionFilled.js";import"../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../icons/customIcons/icons/Archive.js";import"../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../icons/customIcons/icons/Unarchive.js";import"../../../icons/customIcons/icons/Archived.js";import"../../../icons/customIcons/icons/InterventionUnit.js";import"../../../icons/customIcons/icons/CloudDelete.js";import"../../../icons/customIcons/icons/Lasso.js";import"../../../icons/customIcons/icons/Radius.js";import"../../../icons/customIcons/icons/ErrorOps.js";import"../../../icons/customIcons/icons/DataTypeOps.js";import"../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../icons/customIcons/icons/CalibrationOps.js";import"../../../icons/customIcons/icons/CriticalOps.js";import"../../../icons/customIcons/icons/Company.js";import"../../../icons/customIcons/icons/ArchiveOne.js";import"../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../icons/customIcons/icons/Connect.js";import"../../../icons/customIcons/icons/PuzzleOne.js";import"../../../icons/customIcons/icons/Feed.js";import"../../../icons/customIcons/icons/Prompt.js";import"../../../icons/customIcons/icons/Companies.js";import"../../../icons/customIcons/icons/ClipboardAi.js";import"../../../icons/customIcons/icons/Key.js";import"../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../icons/customIcons/icons/MappingManual.js";import"../../../icons/customIcons/icons/Mapping.js";import"../../../icons/customIcons/icons/Metrics.js";import"../../../icons/customIcons/icons/Drops.js";import"../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../icons/customIcons/icons/Template.js";import"../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../icons/customIcons/icons/UnitConversion.js";import"../../../icons/customIcons/icons/NPT.js";import"../../../icons/customIcons/icons/GuidedFrac.js";import{jsxs as j,Fragment as h,jsx as v}from"react/jsx-runtime";var f=function(o){return o.replace(/[^\d]/g,"").substring(0,2)},C=function(o){return Number(o)>=0&&Number(o)<=23},g=function(o){return Number(o)>=0&&Number(o)<60},b=g,N=function(o){return void 0!==o?m(String(o),2,"0"):""},T={input:d.inputElement},F=function(m){var F=m.value,O=m.onChange,x=m.minDate,M=m.maxDate,P=m.saveTime,k=m.goToToday,y=m.clear,z=!F,A=s(null),S=s(null),D=s(null),R=s(),H=n((function(){return{hours:N(null==F?void 0:F.getHours()),minutes:N(null==F?void 0:F.getMinutes()),seconds:N(null==F?void 0:F.getSeconds())}}),[F]),B=c(H.hours),E=o(B,2),G=E[0],U=E[1],q=c(H.minutes),L=o(q,2),W=L[0],w=L[1],K=c(H.seconds),Z=o(K,2),J=Z[0],Q=Z[1];i((function(){R.current!==A.current&&U(H.hours),R.current!==S.current&&w(H.minutes),R.current!==D.current&&Q(H.seconds)}),[H.hours,H.minutes,H.seconds]);var V=n((function(){var o=l(x,F)&&e(x).format("HH:mm:ss"),s=l(M,F)&&e(M).format("HH:mm:ss");return o&&s?"In ".concat(o," - ").concat(s," range"):o?"Can’t be earlier than ".concat(o):s?"Can’t be later than ".concat(s):void 0}),[M,x,F]),X=t((function(o,s){if(F){var n=new Date(F);"hours"===o&&C(s)?n.setHours(Number(s)):"minutes"===o&&g(s)?n.setMinutes(Number(s)):"seconds"===o&&b(s)&&n.setSeconds(Number(s)),Math.floor(n.getTime()/1e3)!==Math.floor(F.getTime()/1e3)&&O(n)}}),[O,F]),Y=t((function(o){o.target.select(),R.current=o.target}),[]),$=t((function(o){var s=f(o.target.value);if(o.target===A.current){var n=C(s)?N(s):H.hours;U(n),X("hours",n)}if(o.target===S.current){var c=g(s)?N(s):H.minutes;w(c),X("minutes",c)}if(o.target===D.current){var i=b(s)?N(s):H.seconds;Q(i),X("seconds",i)}R.current=void 0}),[H.hours,H.minutes,H.seconds,X]),_=t((function(o){var s,n=f(o);(U(n),2===n.length&&C(n))&&(X("hours",n),null===(s=S.current)||void 0===s||s.focus())}),[X]),oo=t((function(o){var s,n=f(o);(w(n),2===n.length&&g(n))&&(X("minutes",n),null===(s=D.current)||void 0===s||s.focus())}),[X]),so=t((function(o){var s=f(o);Q(s),b(s)&&X("seconds",s)}),[X]),no=Number(null==F?void 0:F.getTime())>Number(null==M?void 0:M.getTime())||Number(null==F?void 0:F.getTime())<Number(null==x?void 0:x.getTime()),co=!C(G)||no,io=!g(W)||no,to=!b(J)||no;return j(h,{children:[j("div",{className:r(d.timePicker),children:[v(a,{color:z?"T9":"T1",size:14,className:d.header,children:"Time"}),v(u,{placeholder:"HH",className:d.input,disabled:z,value:G,onChange:_,status:co?"error":void 0,inputRef:A,onFocus:Y,onBlur:$,elementsClassNames:T}),v(a,{color:"T9",size:14,children:":"}),v(u,{placeholder:"MM",className:d.input,disabled:z,value:W,onChange:oo,status:io?"error":void 0,inputRef:S,onFocus:Y,onBlur:$,elementsClassNames:T}),v(a,{color:"T9",size:14,children:":"}),v(u,{placeholder:"SS",className:d.input,disabled:z,value:J,onChange:so,status:to?"error":void 0,inputRef:D,onFocus:Y,onBlur:$,elementsClassNames:T}),V&&j(a,{className:d.constraintText,size:12,children:[v(I,{className:d.constraintIcon,size:16}),V]})]}),j("div",{className:d.footer,children:[k&&v(p,{onClick:k,type:"tertiary",size:"small",children:"Today"}),j("div",{className:d.actions,children:[y&&v(p,{onClick:y,type:"tertiary",size:"small",disabled:!F,children:"Clear"}),v(p,{onClick:P,type:"secondary",size:"small",disabled:!F||co||io||to,children:"Save"})]})]})]})};export{F as TimePicker};
2
2
  //# sourceMappingURL=TimePicker.js.map