pebble-web 2.24.0 → 2.25.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pebble-web.dev.js +38 -11
- package/dist/pebble-web.dev.js.map +1 -1
- package/dist/pebble-web.es.dev.js +38 -11
- package/dist/pebble-web.es.dev.js.map +1 -1
- package/dist/pebble-web.es.js +38 -11
- package/dist/pebble-web.es.js.map +1 -1
- package/dist/pebble-web.js +38 -11
- package/dist/pebble-web.js.map +1 -1
- package/dist/pebble-web.module.dev.js +38 -11
- package/dist/pebble-web.module.dev.js.map +1 -1
- package/dist/pebble-web.module.js +38 -11
- package/dist/pebble-web.module.js.map +1 -1
- package/dist/pebble-web.umd.dev.js +38 -11
- package/dist/pebble-web.umd.dev.js.map +1 -1
- package/dist/pebble-web.umd.js +38 -11
- package/dist/pebble-web.umd.js.map +1 -1
- package/package.json +4 -5
- package/src/components/Logo.tsx +21 -14
- package/src/components/__tests__/__snapshots__/logo.test.tsx.snap +54 -11
package/dist/pebble-web.dev.js
CHANGED
|
@@ -1710,23 +1710,50 @@ var Logo = function Logo(_ref) {
|
|
|
1710
1710
|
id: "Layer_1",
|
|
1711
1711
|
xmlnsXlink: "http://www.w3.org/1999/xlink",
|
|
1712
1712
|
height: height,
|
|
1713
|
-
viewBox: "0 0
|
|
1713
|
+
viewBox: "0 0 923 264",
|
|
1714
1714
|
xmlSpace: "preserve",
|
|
1715
1715
|
style: {
|
|
1716
1716
|
fill: color
|
|
1717
1717
|
}
|
|
1718
1718
|
}, /*#__PURE__*/React.createElement("path", {
|
|
1719
|
-
|
|
1720
|
-
d: "M168.92 65.96l-66.1-64.85v100.61h17.39V40.78l66.11 64.56V4.73h-17.4v61.23zm446.77-18.51L653.4 4.73h-20.6l-41.04 46.48V4.73h-17.4v96.99h17.4V73.34L604 59.84l30.19 41.88h20.33l-38.83-54.27zM422.66 2.92c-27.78 0-50.31 22.53-50.31 50.31s22.52 50.3 50.31 50.3c27.78 0 50.3-22.52 50.3-50.3s-22.52-50.31-50.3-50.31zm0 84.84c-19.05 0-34.54-15.49-34.54-34.53s15.49-34.54 34.54-34.54c19.04 0 34.54 15.49 34.54 34.54 0 19.04-15.5 34.53-34.54 34.53zM0 101.72h18.38L27 82.93h41.75l8.63 18.79h18.51L48.02 0 0 101.72zM33.55 67.9l14.32-31.58L62.21 67.9H33.55zm159.61 33.82h18.37l8.62-18.79h41.75l8.62 18.79h18.51L241.16 0l-48 101.72zm33.53-33.82l14.33-31.58 14.33 31.58h-28.66zm138.43-32.42c0-8.76-3.07-16-9.19-21.84-6.12-5.99-13.5-8.91-22.26-8.91h-37.71v96.99h17.4V67.21h17.25l20.73 34.51h19.62l-23.51-38.68c10.57-4.46 17.67-14.89 17.67-27.56zm-33.25 16.15h-18.51V20.46h19.9c8.34 0 14.6 6.4 14.6 15.31 0 9.32-6.54 15.86-15.99 15.86zm197.61-32.94c9.22 0 17.9 3.59 24.42 10.12l11.15-11.15c-9.82-9.83-22.7-14.74-35.57-14.74-12.87 0-25.75 4.91-35.56 14.74-19.65 19.64-19.65 51.49 0 71.14 9.82 9.82 22.69 14.73 35.56 14.73 12.87 0 25.75-4.91 35.57-14.73L553.9 77.65c-6.52 6.52-15.2 10.11-24.42 10.11-9.23 0-17.89-3.59-24.42-10.11-13.46-13.46-13.46-35.37 0-48.84 6.53-6.52 15.2-10.12 24.42-10.12z"
|
|
1721
|
-
}), /*#__PURE__*/React.createElement("rect", {
|
|
1722
|
-
y: "123.84",
|
|
1723
|
-
className: "st1",
|
|
1724
|
-
width: "654.52",
|
|
1725
|
-
height: "4.26",
|
|
1726
|
-
id: "XMLID_9_"
|
|
1719
|
+
d: " M494.997833,104.989197 C504.561310,120.926979 514.090942,136.486954 524.203430,152.998642 C514.215454,152.998642 505.605194,153.185226 497.019348,152.811401 C495.619934,152.750473 494.014099,150.403091 493.036224,148.789719 C484.614990,134.895966 476.350433,120.907204 467.908600,107.026161 C467.303131,106.030617 465.683411,105.122147 464.509827,105.089546 C457.870575,104.905121 451.223511,105.000366 444.182617,105.000366 C444.182617,120.944054 444.182617,136.684677 444.182617,152.710907 C435.720703,152.710907 427.648346,152.710907 419.286377,152.710907 C419.286377,108.048126 419.286377,63.315472 419.286377,18.226318 C420.622955,18.154409 422.057953,18.011358 423.493042,18.010042 C440.489777,17.994438 457.487518,18.118172 474.482910,17.967182 C491.918823,17.812281 510.099304,31.877623 513.942261,49.596054 C517.227051,64.741020 514.518250,78.747162 503.870880,90.407806 C500.691193,93.890068 496.213104,96.186760 491.701843,99.486000 C492.604675,100.904488 493.784332,102.757935 494.997833,104.989197 M477.814667,80.712967 C478.224762,80.477539 478.625977,80.224724 479.046295,80.009270 C486.206573,76.338890 489.690338,70.406403 490.012604,62.439629 C490.369293,53.622215 487.772491,46.389954 479.129730,42.646801 C467.782715,37.732441 455.882019,40.926376 444.255676,39.921638 C444.255676,54.288414 444.255676,68.004913 444.255676,82.487190 C455.369232,81.977089 466.201569,81.479897 477.814667,80.712967 z"
|
|
1727
1720
|
}), /*#__PURE__*/React.createElement("path", {
|
|
1728
|
-
|
|
1729
|
-
|
|
1721
|
+
d: " M243.000000,80.999062 C243.000000,59.861134 243.000000,39.223000 243.000000,18.292778 C251.270828,18.292778 259.342133,18.292778 267.708313,18.292778 C267.708313,62.935493 267.708313,107.662903 267.708313,152.673645 C263.089844,148.573166 258.427490,144.595566 253.946381,140.423279 C242.820068,130.063721 231.814224,119.574814 220.689880,109.213112 C207.414932,96.848251 194.075836,84.552162 180.730927,72.262764 C179.828751,71.431946 178.644516,70.907402 177.061050,69.904449 C177.061050,97.827423 177.061050,125.180206 177.061050,152.764984 C168.609085,152.764984 160.539383,152.764984 152.233948,152.764984 C152.233948,107.919228 152.233948,63.162922 152.233948,17.442804 C155.759659,20.352665 159.058594,22.797844 162.038971,25.583809 C174.117966,36.874847 186.066513,48.305309 198.126877,59.616413 C207.151505,68.080421 216.276535,76.437363 225.351303,84.847969 C229.948792,89.108955 234.500137,93.420685 239.151474,97.621864 C240.155533,98.528748 241.499756,99.059021 243.000000,99.948097 C243.000000,93.455132 243.000000,87.476997 243.000000,80.999062 z"
|
|
1722
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1723
|
+
d: " M910.661926,153.000000 C903.038269,153.000000 895.869080,153.138168 888.713196,152.891953 C887.143921,152.837967 885.068787,151.816345 884.161133,150.563354 C871.556335,133.165085 859.116211,115.647606 846.629089,98.164024 C845.966187,97.235863 845.244202,96.349922 844.346069,95.178902 C838.674072,101.575691 833.524719,107.255989 828.577393,113.107101 C827.879700,113.932274 828.026184,115.590805 828.022156,116.864372 C827.984802,128.685226 828.000000,140.506256 828.000000,152.663452 C819.820374,152.663452 811.746399,152.663452 803.334839,152.663452 C803.334839,108.149933 803.334839,63.420792 803.334839,18.345610 C811.160645,18.345610 819.235168,18.345610 827.678711,18.345610 C827.678711,38.506351 827.678711,58.915283 827.678711,80.676361 C832.547607,75.480446 836.691406,71.259323 840.605835,66.835304 C847.007141,59.600666 853.248840,52.224957 859.577087,44.925423 C866.231323,37.249908 872.899475,29.586329 879.580261,21.933868 C881.789062,19.403814 884.046814,17.641920 887.978638,17.862658 C896.099915,18.318590 904.264587,18.000000 913.318359,18.000000 C909.295166,22.802053 905.802063,27.189381 902.080322,31.373291 C890.499390,44.392174 878.821899,57.325096 867.209778,70.316254 C865.692383,72.013901 864.110046,73.728264 863.004211,75.686913 C862.464294,76.643105 862.443909,78.537003 863.050659,79.400421 C873.732971,94.599892 884.529419,109.719383 895.342529,124.826630 C901.892395,133.977722 908.512756,143.078461 915.677795,153.000000 C913.601685,153.000000 912.361450,153.000000 910.661926,153.000000 z"
|
|
1724
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1725
|
+
d: " M596.929199,18.000000 C624.058044,18.298351 650.447327,36.316006 658.817078,66.054832 C665.643127,90.308754 660.427124,112.346733 643.258606,131.300949 C632.912842,142.722717 619.844910,149.712357 605.046021,151.664856 C586.753418,154.078339 569.095459,151.058884 553.696228,139.311996 C538.877991,128.008316 529.706116,113.117035 527.302063,95.041100 C524.859924,76.679077 528.575745,59.205280 540.407104,43.965412 C551.615723,29.527632 566.369629,21.425211 583.969360,18.135132 C587.995056,17.382574 592.278381,18.008503 596.929199,18.000000 M589.858582,38.001751 C577.114685,40.207760 566.024475,45.146076 557.696716,55.676926 C548.080322,67.837151 544.472290,81.513992 548.266174,96.258415 C555.857544,125.761482 588.236450,140.607986 614.995605,127.095215 C642.688599,113.110863 650.560669,76.721657 628.043457,52.695580 C618.120605,42.107773 605.447449,37.209694 589.858582,38.001751 z"
|
|
1726
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1727
|
+
d: " M283.337097,152.999969 C279.213562,153.293060 279.707184,151.671585 280.909821,149.218765 C285.791931,139.261703 290.573547,129.254608 295.313782,119.228897 C306.637177,95.279808 317.914398,71.308922 329.213989,47.348579 C333.458374,38.348545 337.705627,29.349840 341.974884,20.361595 C342.377808,19.513321 342.947998,18.744511 343.941742,17.118765 C365.343903,62.617363 386.433380,107.451149 407.857971,152.997406 C399.175629,152.997406 391.533783,153.206604 383.924042,152.806000 C382.542206,152.733246 380.859955,150.374023 380.056152,148.712479 C376.775543,141.930954 373.782043,135.010529 370.662262,128.095825 C352.590302,128.095825 334.607300,128.095825 316.238373,128.095825 C313.145264,135.157791 309.992004,142.322128 306.871490,149.500717 C305.799316,151.967163 304.361877,153.271423 301.288788,153.095932 C295.475830,152.763992 289.630402,152.999985 283.337097,152.999969 M357.233612,105.000000 C358.791687,104.927078 360.349762,104.854156 362.184387,104.768295 C355.774658,90.623322 349.593140,76.982010 343.472656,63.475372 C337.296448,77.078926 331.059998,90.815193 324.619904,105.000000 C335.701355,105.000000 345.995087,105.000000 357.233612,105.000000 z"
|
|
1728
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1729
|
+
d: " M553.000000,182.000000 C673.785400,182.000000 794.070862,182.000000 914.678101,182.000000 C914.678101,184.230164 914.678101,186.300903 914.678101,188.688812 C613.412109,188.688812 311.932343,188.688812 10.226280,188.688812 C10.226280,186.607132 10.226280,184.537598 10.226280,182.000000 C191.032730,182.000000 371.766357,182.000000 553.000000,182.000000 z"
|
|
1730
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1731
|
+
d: " M763.271729,124.290527 C767.045471,121.735161 770.525879,119.428955 773.908997,117.187172 C778.802979,122.189301 783.750854,127.246490 788.718750,132.324173 C767.428406,157.174423 722.870789,159.476486 696.633118,136.089890 C665.316711,108.176437 666.941467,60.746155 695.935547,34.601543 C723.733887,9.535212 768.332520,13.758317 788.770752,37.783039 C783.831726,42.699677 778.906555,47.602581 773.740417,52.745323 C769.980896,50.332146 765.807495,47.358677 761.369019,44.855141 C741.952759,33.903320 715.525085,41.071518 703.154663,60.489037 C685.530090,88.153946 701.108704,123.349464 733.290039,129.719406 C743.248718,131.690613 753.836243,130.568649 763.271729,124.290527 z"
|
|
1732
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1733
|
+
d: " M89.065086,42.809494 C96.380394,58.125313 103.711418,73.433655 111.003220,88.760651 C113.898926,94.847282 116.676910,100.989853 119.562057,107.081589 C126.698242,122.148979 133.865372,137.201721 141.216385,152.673538 C132.467331,152.673538 124.089355,152.673538 115.293709,152.673538 C112.294876,146.018585 109.007797,139.092819 106.066925,132.023041 C104.824631,129.036591 103.250557,127.872192 99.885086,127.913086 C83.560928,128.111420 67.233139,128.010376 50.435722,127.731995 C53.332184,120.586601 56.699547,113.724609 60.528751,106.926247 C72.245125,106.989876 83.499664,106.989876 95.093788,106.989876 C89.184761,93.734802 83.470062,80.915657 77.693474,67.703644 C81.442749,59.143681 85.253914,50.976589 89.065086,42.809494 z"
|
|
1734
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1735
|
+
fill: "#9B5192",
|
|
1736
|
+
d: " M60.066914,106.862617 C56.699547,113.724609 53.332184,120.586601 49.975365,127.830383 C46.390110,135.928253 42.794308,143.644318 38.582245,151.670212 C29.939066,151.944855 21.912146,151.909698 13.885223,151.874542 C14.364792,150.326294 14.663538,148.692291 15.351014,147.242645 C25.878349,125.044159 36.497864,102.889351 47.010223,80.683807 C56.320847,61.016727 65.518562,41.296207 74.797310,21.613977 C75.254089,20.645039 76.009422,19.816847 77.150719,18.161825 C81.353874,26.587799 85.218155,34.334435 89.073761,42.445282 C85.253914,50.976589 81.442749,59.143681 77.410156,67.893570 C74.926964,73.366013 72.602997,78.228050 70.417641,83.151611 C66.919067,91.033821 63.512421,98.956841 60.066914,106.862617 z"
|
|
1737
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1738
|
+
d: " M441.008850,232.067917 C441.859650,233.178818 442.676575,233.916138 443.960571,235.074982 C443.960571,228.834839 443.960571,223.126495 443.960571,217.216690 C446.746246,217.216690 449.148438,217.216690 451.777283,217.216690 C451.777283,228.060822 451.777283,238.799179 451.777283,249.556839 C446.555908,251.307800 443.539734,249.163025 440.813141,244.717133 C437.901947,239.970230 433.996094,235.833313 430.053833,230.833252 C430.053833,237.505173 430.053833,243.535461 430.053833,249.776031 C427.268127,249.776031 424.865784,249.776031 422.229065,249.776031 C422.229065,238.954025 422.229065,228.215561 422.229065,217.505035 C427.881287,215.105011 430.937622,218.569809 433.853638,222.441528 C436.195007,225.550217 438.598877,228.611816 441.008850,232.067917 z"
|
|
1739
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1740
|
+
d: " M480.611023,250.855804 C466.486420,246.741333 464.235352,233.059265 469.878815,224.348862 C473.362854,218.971481 481.955841,215.414520 489.251343,217.102463 C495.944031,218.650940 501.413391,225.279755 502.058289,231.776215 C503.193512,243.211594 494.290314,252.485565 480.611023,250.855804 M479.641663,242.093857 C480.196045,242.392883 480.719238,242.793564 481.309753,242.975006 C486.485413,244.565338 492.334015,241.497101 493.854309,236.428238 C495.142365,232.133591 491.113586,225.501190 486.384552,224.131195 C482.331604,222.957062 478.013245,226.328064 475.865784,231.425522 C473.932770,236.013977 476.349152,238.723328 479.641663,242.093857 z"
|
|
1741
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1742
|
+
d: " M556.830688,220.671371 C563.960571,216.598984 570.755188,215.117706 578.152161,219.504379 C586.290405,224.330597 588.809448,235.153992 582.810120,244.522430 C578.616943,251.070480 566.211304,253.016159 558.980957,248.534744 C549.128967,242.428436 548.517761,228.844345 556.830688,220.671371 M563.053223,241.582840 C569.771973,245.575500 577.480652,242.045731 577.999329,234.739136 C578.284363,230.724152 574.729004,225.484634 570.641052,224.257629 C566.026550,222.872559 563.110046,225.826492 560.684143,228.941635 C557.789612,232.658585 558.619202,236.837173 563.053223,241.582840 z"
|
|
1743
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1744
|
+
d: " M621.920654,242.977264 C623.043030,241.531067 623.742004,240.106934 624.714966,238.124420 C621.661743,238.124420 619.686951,238.124420 617.355530,238.124420 C617.355530,235.889313 617.355530,233.820145 617.355530,231.364777 C621.898682,231.364777 626.750366,231.364777 631.999451,231.364777 C631.999451,235.509216 632.297546,239.662354 631.843262,243.731491 C631.676697,245.222977 629.995178,246.970856 628.546631,247.821533 C621.489746,251.965683 614.164612,252.487350 607.089661,247.963333 C601.680115,244.504196 599.843994,239.031921 600.023804,232.854446 C600.213135,226.351593 604.687683,219.891190 610.625610,218.053513 C617.610840,215.891724 624.343018,216.149567 630.321594,221.656174 C628.911133,223.513733 627.666199,225.153275 626.034607,227.302139 C620.278564,223.864441 614.049866,221.817856 609.474792,229.142044 C607.304932,232.615738 607.451233,236.545197 610.357971,239.852081 C613.358276,243.265472 616.892029,245.111710 621.920654,242.977264 z"
|
|
1745
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1746
|
+
d: " M317.809021,249.999893 C310.046082,250.000000 302.765198,250.000000 295.244141,250.000000 C295.244141,238.979523 295.244141,228.261002 295.244141,217.270355 C303.636566,217.270355 312.027039,217.270355 320.709930,217.270355 C320.709930,219.271988 320.709930,221.339249 320.709930,223.803162 C315.110260,223.803162 309.367645,223.803162 303.247101,223.803162 C303.134094,225.898331 303.040283,227.638260 302.925507,229.766098 C307.831268,229.766098 312.579559,229.766098 317.662750,229.766098 C317.662750,232.198044 317.662750,234.266022 317.662750,236.881744 C313.073761,236.881744 308.191681,236.881744 303.197266,236.881744 C303.197266,239.161514 303.197266,240.896759 303.197266,243.006958 C309.128143,243.006958 314.877472,243.006958 321.425781,243.006958 C319.668274,245.531113 323.788300,249.452209 317.809021,249.999893 z"
|
|
1747
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1748
|
+
d: " M378.000000,223.094299 C378.000000,220.954681 378.000000,219.302032 378.000000,217.325104 C380.546875,217.325104 382.954498,217.325104 385.757751,217.325104 C385.757751,221.187363 385.757751,225.272171 385.757751,229.678406 C390.208282,229.678406 394.282074,229.678406 398.763367,229.678406 C398.763367,225.790314 398.763367,221.712875 398.763367,217.318512 C401.553162,217.318512 403.958832,217.318512 406.690369,217.318512 C406.690369,227.863983 406.690369,238.611008 406.690369,249.680099 C404.445190,249.680099 402.037170,249.680099 399.233124,249.680099 C399.233124,245.803009 399.233124,241.718018 399.233124,237.316925 C394.782227,237.316925 390.708527,237.316925 386.227539,237.316925 C386.227539,241.218948 386.227539,245.297058 386.227539,249.686401 C383.436920,249.686401 381.027344,249.686401 378.000000,249.686401 C378.000000,241.112595 378.000000,232.346939 378.000000,223.094299 z"
|
|
1749
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1750
|
+
d: " M359.708740,249.073227 C347.436340,254.958038 333.078064,247.206329 334.075928,232.758286 C334.522003,226.299698 337.499298,220.647110 343.747742,218.252869 C350.124664,215.809402 356.840454,215.909943 362.614685,220.393890 C363.353882,220.967896 363.387848,223.220810 362.926605,224.364456 C362.411011,225.642899 360.958405,226.543411 360.268860,227.246231 C356.768341,226.106094 353.571472,224.366577 350.325714,224.270020 C348.383575,224.212250 346.095642,226.460327 344.438568,228.140778 C341.315125,231.308319 341.327454,236.069565 344.057251,239.533066 C348.134460,244.706131 351.119690,244.800873 360.478455,239.757782 C361.646271,241.337662 362.919037,243.059540 364.418854,245.088562 C363.365173,246.039978 361.729553,247.516846 359.708740,249.073227 z"
|
|
1751
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1752
|
+
d: " M264.027283,248.734833 C264.003387,240.630539 264.003387,233.006439 264.003387,224.997635 C260.532990,224.997635 257.451202,224.997635 254.193878,224.997635 C254.193878,222.200241 254.193878,219.794647 254.193878,217.201965 C263.468353,217.201965 272.548737,217.201965 281.801941,217.201965 C281.801941,219.810669 281.801941,222.216476 281.801941,225.013306 C278.533356,225.013306 275.443634,225.013306 271.982727,225.013306 C271.982727,233.480179 271.982727,241.566605 271.982727,250.312714 C269.036621,249.904999 266.543884,249.560013 264.027283,248.734833 z"
|
|
1753
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1754
|
+
d: " M643.670410,220.212387 C642.890015,219.179291 642.388611,218.429306 641.832458,217.597321 C653.404114,213.870346 654.102295,224.179657 658.613647,229.641968 C660.169250,226.883835 661.989197,224.091782 663.377991,221.099655 C665.866577,215.737961 670.372314,216.856125 675.311768,217.249817 C672.107605,222.304947 669.616577,227.621902 665.864075,231.808121 C661.047791,237.181091 662.229797,243.327560 661.953979,249.689301 C659.761169,249.689301 657.692139,249.689301 655.263306,249.689301 C655.185791,248.631683 654.862183,247.330673 655.039246,246.101776 C655.890930,240.189178 653.628052,235.356949 650.288818,230.709564 C647.955872,227.462799 646.047485,223.911041 643.670410,220.212387 z"
|
|
1755
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
1756
|
+
d: " M524.000000,235.931824 C524.000000,238.408676 524.000000,240.393753 524.000000,242.782944 C529.231201,242.782944 534.307495,242.782944 539.690186,242.782944 C539.690186,245.250183 539.690186,247.321182 539.690186,249.699005 C532.127014,249.699005 524.375610,249.699005 516.310547,249.699005 C516.310547,239.097046 516.310547,228.358200 516.310547,217.308502 C518.575562,217.308502 520.980957,217.308502 524.000000,217.308502 C524.000000,223.233017 524.000000,229.336533 524.000000,235.931824 z"
|
|
1730
1757
|
}));
|
|
1731
1758
|
};
|
|
1732
1759
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pebble-web.dev.js","sources":["../src/theme/mixins.ts","../src/theme/constants.ts","../src/theme/typography.ts","../src/theme/styles.ts","../src/components/styles/Button.styles.ts","../src/components/styles/Loader.styles.ts","../src/components/Loader.tsx","../src/components/Button.tsx","../src/components/styles/Calendar.styles.ts","../src/components/Calendar.tsx","../src/components/styles/Control.styles.ts","../src/components/shared/Control.tsx","../src/components/utils/getSelectedCheckboxes.ts","../src/components/CheckboxGroup.tsx","../src/components/styles/Dropdown.styles.ts","../src/components/OutsideClick.tsx","../src/utils/animation.ts","../src/components/DropDown.tsx","../src/components/styles/Input.styles.ts","../src/components/styles/Date.styles.ts","../src/components/Input.tsx","../src/components/NativeDateInput.tsx","../src/utils/useragent/index.tsx","../src/components/DateInput.tsx","../src/components/Logo.tsx","../src/components/styles/Toast.styles.ts","../src/components/Toast.tsx","../src/components/styles/Message.styles.ts","../src/components/Message.tsx","../src/components/Modal.tsx","../src/components/styles/Options.styles.ts","../src/components/Option.tsx","../src/components/styles/Search.styles.ts","../src/components/Search.tsx","../src/components/styles/OptionGroup.styles.ts","../src/components/shared/OptionGroup.tsx","../src/components/styles/OptionGroupCheckBox.styles.ts","../src/components/OptionGroupCheckBox.tsx","../src/components/OptionGroupRadio.tsx","../src/components/styles/Select.styles.ts","../src/components/Select.tsx","../src/components/styles/PhoneNumberInput.styles.ts","../src/components/PhoneNumberInput.tsx","../src/components/styles/Popper.styles.ts","../src/components/Popper.tsx","../src/components/styles/PopUp.styles.ts","../src/components/PopUp.tsx","../src/components/styles/Tabs.styles.ts","../src/components/Tabs.tsx","../src/components/styles/PresetCalendar.styles.ts","../src/components/PresetCalendar.tsx","../src/components/RadioGroup.tsx","../src/components/styles/Rating.styles.ts","../src/components/Rating.tsx","../src/components/styles/SecondaryInput.styles.ts","../src/components/SecondaryInput.tsx","../src/components/styles/Sidebar.styles.ts","../src/components/Sidebar.tsx","../src/components/Slider.tsx","../src/components/styles/Stepper.styles.ts","../src/components/Stepper.tsx","../src/components/styles/Switch.styles.ts","../src/components/Switch.tsx","../src/components/styles/Tag.styles.ts","../src/components/Tag.tsx","../src/components/Text.tsx","../src/components/styles/TimePicker.styles.ts","../src/components/TimePicker.tsx","../src/components/styles/Tooltip.styles.ts","../src/components/Tooltip.tsx","../src/components/styles/TypeAhead.styles.ts","../src/components/TypeAhead.tsx","../src/utils/strings/capitalize.ts","../src/utils/numbers/format.ts","../src/utils/analytics/ga.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["colors","_css","React.createElement","inputStyle","_cx","React.createRef","React.Children","React.Component","disabledStyle","popperStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pebble-web.dev.js","sources":["../src/theme/mixins.ts","../src/theme/constants.ts","../src/theme/typography.ts","../src/theme/styles.ts","../src/components/styles/Button.styles.ts","../src/components/styles/Loader.styles.ts","../src/components/Loader.tsx","../src/components/Button.tsx","../src/components/styles/Calendar.styles.ts","../src/components/Calendar.tsx","../src/components/styles/Control.styles.ts","../src/components/shared/Control.tsx","../src/components/utils/getSelectedCheckboxes.ts","../src/components/CheckboxGroup.tsx","../src/components/styles/Dropdown.styles.ts","../src/components/OutsideClick.tsx","../src/utils/animation.ts","../src/components/DropDown.tsx","../src/components/styles/Input.styles.ts","../src/components/styles/Date.styles.ts","../src/components/Input.tsx","../src/components/NativeDateInput.tsx","../src/utils/useragent/index.tsx","../src/components/DateInput.tsx","../src/components/Logo.tsx","../src/components/styles/Toast.styles.ts","../src/components/Toast.tsx","../src/components/styles/Message.styles.ts","../src/components/Message.tsx","../src/components/Modal.tsx","../src/components/styles/Options.styles.ts","../src/components/Option.tsx","../src/components/styles/Search.styles.ts","../src/components/Search.tsx","../src/components/styles/OptionGroup.styles.ts","../src/components/shared/OptionGroup.tsx","../src/components/styles/OptionGroupCheckBox.styles.ts","../src/components/OptionGroupCheckBox.tsx","../src/components/OptionGroupRadio.tsx","../src/components/styles/Select.styles.ts","../src/components/Select.tsx","../src/components/styles/PhoneNumberInput.styles.ts","../src/components/PhoneNumberInput.tsx","../src/components/styles/Popper.styles.ts","../src/components/Popper.tsx","../src/components/styles/PopUp.styles.ts","../src/components/PopUp.tsx","../src/components/styles/Tabs.styles.ts","../src/components/Tabs.tsx","../src/components/styles/PresetCalendar.styles.ts","../src/components/PresetCalendar.tsx","../src/components/RadioGroup.tsx","../src/components/styles/Rating.styles.ts","../src/components/Rating.tsx","../src/components/styles/SecondaryInput.styles.ts","../src/components/SecondaryInput.tsx","../src/components/styles/Sidebar.styles.ts","../src/components/Sidebar.tsx","../src/components/Slider.tsx","../src/components/styles/Stepper.styles.ts","../src/components/Stepper.tsx","../src/components/styles/Switch.styles.ts","../src/components/Switch.tsx","../src/components/styles/Tag.styles.ts","../src/components/Tag.tsx","../src/components/Text.tsx","../src/components/styles/TimePicker.styles.ts","../src/components/TimePicker.tsx","../src/components/styles/Tooltip.styles.ts","../src/components/Tooltip.tsx","../src/components/styles/TypeAhead.styles.ts","../src/components/TypeAhead.tsx","../src/utils/strings/capitalize.ts","../src/utils/numbers/format.ts","../src/utils/analytics/ga.ts"],"sourcesContent":["export const textEllipsis = {\n overflowX: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\"\n} as const;\n\nexport const flexRow = {\n display: \"flex\",\n flexDirection: \"row\"\n} as const;\n\nexport const flexSpaceBetween = {\n ...flexRow,\n justifyContent: \"space-between\",\n alignContent: \"initial\"\n} as const;\n\nexport const flexMiddleAlign = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n} as const;\n\nexport const getPlaceholderStyle = (color: string) =>\n ({\n \"::-webkit-input-placeholder\": { color },\n \"::-moz-placeholder\": { color },\n \":-ms-input-placeholder\": { color },\n \":-moz-placeholder\": { color },\n \"::placeholder\": { color }\n } as const);\n","import { ThemeConstants } from \"./typings/constants\";\nimport { colors } from \"pebble-shared\";\n\nexport const constants: ThemeConstants = {\n borderRadius: 3,\n buttonHeight: 40,\n animationCurve: \"cubic-bezier(.64,.09,.08,1)\",\n padding: {\n base: 20,\n higher: 60\n },\n\n border: {\n base: `1px solid ${colors.gray.light}`,\n light: `1px solid ${colors.gray.lighter}`\n },\n\n boxShadow: {\n base: `0 2px 7px 0 #F2F2F2`,\n elevated: `0 4px 7px 0 ${colors.gray.light}`,\n xElevated: \"0 2px 15px 0 rgba(0,0,0,0.1)\"\n }\n};\n","import { Typography } from \"./typings/typography\";\nimport { colors } from \"pebble-shared\";\n\nconst fontSize = {\n xs: 10,\n s: 12,\n normal: 14,\n l: 16,\n xl: 18,\n xll: 22\n};\n\nconst enum FontWeight {\n NORMAL = 400,\n BOLD = 500\n}\n\nexport const typography: Typography = {\n xll: {\n regular: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.darker,\n fontSize: fontSize.xll\n },\n bold: {\n fontWeight: FontWeight.BOLD,\n color: colors.gray.darker,\n fontSize: fontSize.xll\n }\n },\n\n xl: {\n bold: {\n fontWeight: FontWeight.BOLD,\n color: colors.gray.darker,\n fontSize: fontSize.xl\n }\n },\n\n l: {\n bold: {\n fontWeight: FontWeight.BOLD,\n color: colors.gray.dark,\n fontSize: fontSize.l\n },\n light: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.dark,\n fontSize: fontSize.l\n }\n },\n\n normal: {\n regular: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.darker,\n fontSize: fontSize.normal\n },\n bold: {\n fontWeight: FontWeight.BOLD,\n color: colors.gray.darker,\n fontSize: fontSize.normal\n },\n light: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.dark,\n fontSize: fontSize.normal\n },\n lighter: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.base,\n fontSize: fontSize.normal\n },\n link: {\n fontWeight: FontWeight.NORMAL,\n color: colors.violet.base,\n fontSize: fontSize.normal\n }\n },\n\n s: {\n regular: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.darker,\n fontSize: fontSize.s\n },\n bold: {\n fontWeight: FontWeight.BOLD,\n color: colors.gray.darker,\n fontSize: fontSize.s\n },\n light: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.dark,\n fontSize: fontSize.s\n },\n lighter: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.base,\n fontSize: fontSize.s\n },\n link: {\n fontWeight: FontWeight.NORMAL,\n color: colors.violet.base,\n fontSize: fontSize.s\n }\n },\n\n xs: {\n bold: {\n fontWeight: FontWeight.BOLD,\n color: colors.gray.darker,\n fontSize: fontSize.xs\n },\n light: {\n fontWeight: FontWeight.NORMAL,\n color: colors.gray.dark,\n fontSize: fontSize.xs\n }\n }\n};\n","import { css } from \"emotion\";\nimport { constants } from \"./constants\";\nimport { typography } from \"./typography\";\nimport { colors } from \"pebble-shared\";\n\nexport const tableStyle = css({\n borderRadius: constants.borderRadius,\n border: constants.border.dark,\n ...typography.s.regular,\n width: \"100%\",\n borderCollapse: \"separate\",\n borderSpacing: 0,\n backgroundColor: colors.gray.lightest,\n \"tr:last-child\": {\n td: {\n border: 0\n },\n \"td:first-child\": {\n borderBottomLeftRadius: constants.borderRadius\n },\n \"td:last-child\": {\n borderBottomRightRadius: constants.borderRadius\n }\n },\n \"tr:first-child\": {\n \"th:first-child\": {\n borderLeftLeftRadius: constants.borderRadius\n },\n \"th:last-child\": {\n borderLeftRightRadius: constants.borderRadius\n }\n },\n th: {\n textAlign: \"left\",\n ...typography.xs.bold,\n color: colors.gray.dark\n },\n \"tbody > tr:nth-of-type(2n + 1)\": {\n backgroundColor: colors.white.base\n },\n \"th, td\": {\n height: 50,\n padding: \"10px 25px\",\n borderBottom: constants.border.dark\n }\n});\n\nexport const disableScrollY = css({\n overflowY: \"hidden\"\n});\n","import { css } from \"emotion\";\nimport { constants, typography } from \"../../theme\";\nimport { ButtonType, MappingColorByType } from \"../typings/Button\";\nimport { colors } from \"pebble-shared\";\n\nconst { violet, gray, white, red, emerald } = colors;\n\nexport const smallButtonHeight = 40;\n\nconst commonButtonStyle = css({\n lineHeight: \"23px\",\n height: constants.buttonHeight,\n padding: \"0 20px\",\n display: \"flex\",\n alignItems: \"center\",\n transition: \"all ease-out .2s\",\n borderRadius: constants.borderRadius,\n outline: \"none\",\n position: \"relative\",\n overflow: \"hidden\",\n cursor: \"pointer\",\n whiteSpace: \"nowrap\",\n justifyContent: \"center\",\n border: 0,\n \"&[disabled]\": {\n cursor: \"not-allowed\"\n }\n});\n\nconst mappingColorByType: MappingColorByType = {\n primary: {\n base: violet.base,\n hover: violet.light,\n active: violet.dark,\n disabled: violet.lighter\n },\n secondary: {\n textColor: gray.darker,\n base: gray.lighter,\n hover: gray.lightest,\n active: gray.base,\n disabled: gray.lighter\n },\n success: {\n base: emerald.base,\n hover: emerald.light,\n active: emerald.dark,\n disabled: emerald.lighter\n },\n alert: {\n base: red.base,\n hover: red.light,\n active: red.dark,\n disabled: red.lighter\n }\n};\n\nconst linkStyle = {\n backgroundColor: \"transparent\",\n border: 0,\n color: violet.base,\n minWidth: 0,\n padding: 0,\n \":not([disabled]):hover\": {\n textDecoration: \"underline\"\n },\n \"&[disabled]\": {\n color: violet.lighter\n }\n};\n\nconst getStyleByType = (type: ButtonType, filled: boolean) => {\n if (type === \"link\") return linkStyle;\n\n const _color = mappingColorByType[type];\n const { base: colorBase, disabled, hover, active, textColor } = _color;\n\n const defaultFontColor = filled ? textColor || white.base : colorBase;\n\n return {\n color: defaultFontColor,\n backgroundColor: filled ? colorBase : white.base,\n border: filled ? \"none\" : `1px solid ${colorBase}`,\n \"&:not([disabled]):hover\": {\n color: textColor || white.base,\n backgroundColor: hover,\n borderColor: hover\n },\n \"&:not([disabled]):active\": {\n color: textColor || white.base,\n backgroundColor: active,\n borderColor: active\n },\n \"&[disabled]\": {\n color: textColor || white.base,\n backgroundColor: disabled,\n borderColor: disabled\n }\n };\n};\n\nconst styleBasedOnSize = {\n \"x-small\": {\n height: 25,\n minWidth: 70,\n ...typography.xs.light\n },\n small: {\n height: smallButtonHeight,\n minWidth: 100,\n ...typography.s.regular\n },\n large: {\n height: 50,\n minWidth: 140,\n ...typography.normal.regular\n }\n};\n\nexport const getButtonStyle = (\n size: keyof typeof styleBasedOnSize,\n type: ButtonType,\n showShadow: boolean,\n filled: boolean\n) => {\n return css([\n commonButtonStyle,\n {\n ...styleBasedOnSize[size],\n ...getStyleByType(type, filled),\n boxShadow: showShadow ? constants.boxShadow.base : \"none\"\n }\n ]);\n};\n\nexport const iconStyle = css({\n marginLeft: 15,\n fontWeight: \"bold\",\n fontSize: 8,\n transition: \"transform ease-out .2s\",\n willTransform: \"transform\",\n marginTop: 2,\n color: colors.gray.dark\n});\n\nexport const dropDownButtonStyle = css({\n border: constants.border.base,\n \"&:not([disabled]):hover\": {\n backgroundColor: colors.gray.lighter\n }\n});\n\nexport const dropDownButtonDefaultStyle = css({\n backgroundColor: colors.white.base,\n color: colors.gray.darker,\n \"&:not([disabled]):hover\": {\n backgroundColor: colors.gray.lighter\n }\n});\n","import { keyframes, css } from \"emotion\";\nimport { mixins } from \"../../theme\";\n\nconst bounceDelay = keyframes({\n \"0%, 80%, 100%\": {\n transform: \"scale(0)\"\n },\n \"40%\": {\n transform: \"scale(1)\"\n }\n});\n\nexport const spinnerStyle = css({\n ...mixins.flexSpaceBetween,\n width: 70,\n \"> div\": {\n width: 18,\n height: 18,\n borderRadius: \"100%\",\n display: \"inline-block\",\n animation: `${bounceDelay} 1.4s infinite ease-in-out both`,\n \"&:first-of-type\": {\n animationDelay: \"-0.32s\"\n },\n \"&:nth-of-type(2n)\": {\n animationDelay: \"-0.16s\"\n }\n }\n});\n","import * as React from \"react\";\nimport { LoaderProps } from \"./typings/Loader\";\nimport { spinnerStyle } from \"./styles/Loader.styles\";\nimport { colors } from \"pebble-shared\";\nimport { cx } from \"emotion\";\n\nconst Loader: React.FunctionComponent<LoaderProps> = ({\n color = colors.gray.darker,\n scale = 1,\n className\n}) => {\n const style = {\n backgroundColor: color\n };\n return (\n <div\n className={cx(spinnerStyle, className)}\n style={{ transform: `scale(${scale})` }}\n >\n <div style={style} />\n <div style={style} />\n <div style={style} />\n </div>\n );\n};\n\nexport default Loader;\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport {\n iconStyle,\n getButtonStyle,\n dropDownButtonStyle,\n dropDownButtonDefaultStyle\n} from \"./styles/Button.styles\";\nimport Ink from \"react-ink\";\nimport { ButtonProps, DropDownButtonProps } from \"./typings/Button\";\nimport Loader from \"./Loader\";\nimport { colors } from \"pebble-shared\";\n\nconst Button: React.FunctionComponent<ButtonProps> = ({\n type = \"primary\",\n disabled,\n children,\n onClick,\n width,\n showShadow,\n className,\n showRipple = true,\n loading,\n outline,\n size = \"small\",\n buttonProps\n}: ButtonProps) => {\n const disableAction = disabled || loading;\n\n const _outline = size === \"x-small\" || !!outline;\n\n const _className = cx(\n getButtonStyle(size, type, !!showShadow, !_outline),\n className\n );\n\n return (\n <button\n className={_className}\n onClick={!disableAction ? onClick : undefined}\n style={{ width }}\n disabled={disabled}\n {...buttonProps}\n >\n {loading ? <Loader color={colors.white.base} scale={0.4} /> : children}\n {!disableAction && showRipple && type !== \"link\" && <Ink />}\n </button>\n );\n};\n\nexport const DropDownButton = ({\n isOpen,\n isSelected,\n children,\n className,\n ...props\n}: DropDownButtonProps) => {\n const _className = cx(dropDownButtonStyle, {\n [dropDownButtonDefaultStyle]: !(isOpen || isSelected)\n });\n\n return (\n <Button {...props} type=\"secondary\" className={cx(_className, className)}>\n <React.Fragment>\n {children}{\" \"}\n <i\n className={cx(\"pi pi-arrow-drop-down\", iconStyle)}\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"none\"\n }}\n />\n </React.Fragment>\n </Button>\n );\n};\n\nexport default Button;\n","import { css } from \"emotion\";\nimport { constants, mixins, typography } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nexport const wrapperStyle = css({\n backgroundColor: colors.white.base,\n borderRadius: constants.borderRadius,\n boxShadow: constants.boxShadow.xElevated,\n overflow: \"hidden\",\n padding: 20,\n position: \"relative\"\n});\n\nexport const tileStyle = css({\n ...typography.normal.regular,\n height: 48,\n width: 48,\n padding: 0,\n position: \"relative\",\n textAlign: \"center\",\n cursor: \"pointer\",\n outline: \"none\",\n backgroundColor: colors.gray.lightest,\n borderRadius: constants.borderRadius,\n display: \"table\",\n borderCollapse: \"collapse\",\n border: `1px solid ${colors.white.base}`,\n borderLeft: 0,\n borderTop: 0,\n time: {\n fontFamily: \"inherit\"\n },\n \"&.react-calendar__tile--now\": {\n color: colors.violet.base\n },\n \"&:hover\": {\n backgroundColor: colors.gray.lighter\n },\n \"&[disabled]\": {\n color: colors.gray.base,\n \"&:hover\": {\n backgroundColor: colors.gray.lightest,\n cursor: \"not-allowed\"\n }\n },\n \"&.react-calendar__tile--active\": {\n backgroundColor: colors.violet.lightest,\n color: colors.violet.base\n },\n \"&.react-calendar__tile--rangeStart\": {\n backgroundColor: colors.violet.base,\n color: `${colors.white.base} !important`\n },\n \"&.react-calendar__tile--rangeEnd\": {\n backgroundColor: colors.violet.base,\n color: `${colors.white.base} !important`\n },\n \"&.react-calendar__tile--singleSelect\": {\n backgroundColor: colors.violet.base,\n color: colors.white.base\n },\n \"&.react-calendar__month-view__days__day--neighboringMonth\": {\n color: colors.gray.base\n }\n});\n\nexport const dateStyle = css({\n width: 356,\n margin: 10,\n position: \"relative\",\n \".react-calendar__month-view__weekdays__weekday\": {\n color: colors.gray.dark,\n lineSpacing: \"7px\",\n fontSize: 12,\n textAlign: \"center\"\n },\n \".react-calendar__navigation__arrow\": {\n border: `1px solid ${colors.gray.light}`,\n padding: \"8px 10px\",\n borderRadius: constants.borderRadius,\n alignItems: \"center\",\n display: \"flex\",\n cursor: \"pointer\",\n outline: \"none\",\n height: 40,\n width: 40,\n backgroundColor: colors.white.base,\n \"&.react-calendar__navigation__prev-button\": {\n position: \"absolute\",\n right: 47\n },\n \"&:disabled\": {\n cursor: \"not-allowed\"\n }\n },\n \".react-calendar__navigation__label\": {\n ...typography.xl.bold,\n textAlign: \"left\",\n border: 0,\n outline: \"none\",\n cursor: \"pointer\",\n backgroundColor: colors.white.base,\n paddingLeft: 5\n },\n \".react-calendar__month-view \": {\n marginTop: 30\n },\n \".react-calendar__month-view__weekdays\": {\n marginBottom: 20\n },\n \".react-calendar__decade-view__years, .react-calendar__century-view, .react-calendar__year-view\": {\n marginTop: 15\n }\n});\n\nexport const dotWrapper = css({\n display: \"flex\",\n justifyContent: \"center\",\n position: \"absolute\",\n width: \"100%\"\n});\n\nexport const dotStyle = css({\n height: 4,\n width: 4,\n display: \"inline-block\",\n borderRadius: constants.borderRadius,\n margin: \"5px 2px 0\"\n});\n\nexport const buttonsWrapper = css({\n ...mixins.flexSpaceBetween,\n marginTop: 20\n});\n","import * as React from \"react\";\nimport { CalendarTileProperties } from \"react-calendar/dist/entry.nostyle\";\nimport RCalendar from \"react-calendar/dist/Calendar\";\nimport { css, cx } from \"emotion\";\nimport { CalendarProps, CalendarState } from \"./typings/Calendar\";\nimport {\n buttonsWrapper,\n dateStyle,\n dotStyle,\n dotWrapper,\n tileStyle,\n wrapperStyle\n} from \"./styles/Calendar.styles\";\nimport Button from \"./Button\";\nimport { isSameDay, endOfDay, startOfDay, addDays, subDays } from \"date-fns\";\n\nclass Calendar extends React.PureComponent<CalendarProps, CalendarState> {\n static defaultProps: Partial<CalendarProps> = {\n onChange: () => {},\n tileDots: []\n };\n\n state: Readonly<CalendarState> = {\n value: this.props.selected,\n singleSelectedDate: null\n };\n\n private onChange = (value: Date | Date[]) => {\n // tslint:disable-next-line no-this-assignment Doing this to reduce lookups on this, not avoiding to use fat arrow functions\n const { props } = this;\n // The following is exactly the same code.\n // But Typescript cannot merge into one.\n if (props.range) {\n if (Array.isArray(value) && value.length === 2) {\n this.setState(\n {\n value: value as [Date, Date],\n singleSelectedDate: null,\n maxRangeDates: undefined\n },\n () => props.onChange(value as [Date, Date])\n );\n }\n } else {\n if (!Array.isArray(value)) {\n this.setState(\n {\n value,\n singleSelectedDate: null,\n maxRangeDates: undefined\n },\n () => props.onChange(value)\n );\n }\n }\n };\n\n private onDayClick = (day: Date) => {\n const { onClickDay } = this.props;\n if (this.props.range && this.props.maxRange) {\n const { maxRange } = this.props;\n this.setState({\n maxRangeDates: {\n future: addDays(day, maxRange),\n past: subDays(day, maxRange)\n }\n });\n }\n this.setState({ singleSelectedDate: [startOfDay(day), endOfDay(day)] });\n if (onClickDay) onClickDay(day);\n };\n\n private getTileContent = ({ date }: CalendarTileProperties) => {\n const dot = this.props.tileDots.find(\n datum => !!datum.timeStamp && isSameDay(date, datum.timeStamp)\n );\n\n return dot ? (\n <div className={dotWrapper}>\n {dot.colors &&\n dot.colors.map((color, i) => (\n <span\n key={i}\n className={dotStyle}\n style={{ backgroundColor: color }}\n />\n ))}\n </div>\n ) : null;\n };\n\n private getDisabledDays = ({ date }: CalendarTileProperties) => {\n const { disabledDays } = this.props;\n return (\n (disabledDays &&\n disabledDays.length &&\n disabledDays.some(_date => isSameDay(_date, date))) ||\n false\n );\n };\n\n private onApply = () => {\n // tslint:disable-next-line no-this-assignment\n const { props } = this;\n const { value, singleSelectedDate } = this.state;\n if (props.range && props.onApply) {\n if (singleSelectedDate) {\n props.onApply(singleSelectedDate);\n } else if (Array.isArray(value)) {\n props.onApply(value);\n } else if (value === undefined) {\n props.onApply(value);\n }\n } else if (!props.range && props.onApply && !Array.isArray(value)) {\n props.onApply(value);\n }\n };\n\n private onClear = () => {\n const { onClear } = this.props;\n this.setState({\n value: undefined\n });\n if (onClear) {\n onClear();\n }\n };\n\n render() {\n const {\n range,\n selected,\n hideShadow,\n className,\n onApply,\n onClear,\n maxDate,\n minDate,\n ...rest\n } = this.props;\n const { maxRangeDates } = this.state;\n\n return (\n <div\n className={cx(\n wrapperStyle,\n {\n [css({ boxShadow: \"none\" })]: !!hideShadow\n },\n className\n )}\n >\n <RCalendar\n {...rest}\n onChange={this.onChange}\n selectRange={range}\n view=\"month\"\n value={selected}\n next2Label={null}\n prev2Label={null}\n tileClassName={tileStyle}\n className={dateStyle}\n showNeighboringMonth={false}\n tileContent={this.getTileContent}\n tileDisabled={this.getDisabledDays}\n onClickDay={this.onDayClick}\n prevLabel={\n <i style={{ fontSize: 14 }} className=\"pi pi-chevron-left\" />\n }\n nextLabel={\n <i style={{ fontSize: 14 }} className=\"pi pi-arrow-right\" />\n }\n maxDate={maxDate || (maxRangeDates && maxRangeDates.future)}\n minDate={minDate || (maxRangeDates && maxRangeDates.past)}\n />\n\n {(onClear || onApply) && (\n <div className={buttonsWrapper}>\n {onClear && (\n <Button onClick={this.onClear} type=\"secondary\">\n Clear\n </Button>\n )}\n {onApply && <Button onClick={this.onApply}>Apply</Button>}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default Calendar;\n","import { css } from \"emotion\";\nimport { typography } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nexport const radioIconStyle = css({\n marginRight: 10,\n fontSize: 16,\n paddingTop: 2,\n height: 18\n});\n\nexport const controlStyle = css({\n cursor: \"pointer\",\n display: \"flex\",\n outline: \"none\",\n padding: \"10px 0\",\n position: \"relative\",\n alignItems: \"center\",\n ...typography.normal.regular,\n \"&[data-disabled='true']\": {\n cursor: \"not-allowed\",\n \".i\": {\n color: colors.gray.light\n }\n }\n});\n","import * as React from \"react\";\nimport { controlStyle, radioIconStyle } from \"../styles/Control.styles\";\nimport { ControlProps } from \"../typings/Control\";\nimport { cx } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nfunction Control<OptionType>(props: ControlProps<OptionType>) {\n const {\n checked,\n onChange,\n value,\n disabled,\n children = ControlView,\n type,\n className,\n indeterminate\n } = props;\n return (\n <div\n className={cx(controlStyle, className)}\n role={type}\n aria-disabled={disabled}\n aria-checked={checked}\n data-disabled={disabled}\n data-indeterminate={indeterminate}\n tabIndex={checked ? 0 : -1}\n onClick={\n !disabled\n ? (e: React.MouseEvent) =>\n onChange && onChange({ value, checked: !checked }, e)\n : undefined\n }\n >\n {children(props)}\n </div>\n );\n}\n\ninterface ControlViewProps {\n label: React.ReactNode;\n checked?: boolean;\n type: \"radio\" | \"checkbox\";\n disabled?: boolean;\n iconClassName?: string;\n indeterminate?: boolean;\n}\n\nexport const ControlView = ({\n checked,\n label,\n type,\n disabled,\n iconClassName,\n indeterminate\n}: ControlViewProps) => {\n const isRadio = type === \"radio\";\n\n const wrapClass = cx(radioIconStyle, iconClassName);\n const iconClass = cx(\"pi\", {\n \"pi-radio\": !!isRadio && !checked,\n \"pi-radio-selected\": !!isRadio && !!checked,\n \"pi-checkbox-selected\": !indeterminate && !isRadio && !!checked,\n \"pi-checkbox-unselected\": !indeterminate && !isRadio && !checked,\n \"pi-checkbox-indeterminate\": !!indeterminate && !isRadio\n });\n\n const getColor = () => {\n if (disabled) {\n return colors.gray.base;\n }\n if (checked) {\n return colors.violet.base;\n }\n return colors.gray.light;\n };\n\n return (\n <>\n <div className={wrapClass}>\n <i style={{ color: getColor() }} className={iconClass} />\n </div>{\" \"}\n {label}\n </>\n );\n};\n\nexport default Control;\n","export function getSelectedCheckboxes<OptionType>(\n changedValue: OptionType,\n prevSelected?: OptionType[]\n): OptionType[] {\n const _selected = prevSelected || [];\n const cloned = _selected.slice(0);\n const index = _selected.findIndex(datum => datum === changedValue);\n if (index >= 0) {\n cloned.splice(index, 1);\n } else {\n cloned.push(changedValue);\n }\n return cloned;\n}\n","import * as React from \"react\";\nimport { CheckboxGroupProps } from \"./typings/CheckboxGroup\";\nimport { CheckboxProps } from \"./typings/Checkbox\";\nimport { getSelectedCheckboxes } from \"./utils/getSelectedCheckboxes\";\n\nexport default class CheckboxGroup<OptionType> extends React.PureComponent<\n CheckboxGroupProps<OptionType>\n> {\n private handleChange = (\n { value }: { value: OptionType },\n event: React.MouseEvent\n ) => {\n const { onChange, selected } = this.props;\n onChange(getSelectedCheckboxes(value, selected), event);\n };\n\n render() {\n const { children, selected, className, name, disabled } = this.props;\n\n const _children = React.Children.map(children, _checkbox => {\n // `_checkbox as React.ReactElement<CheckboxProps>` is a hack\n // Because React does not allow us to specify what sort of elements\n // you can allow as children and leaves it on you to figure out\n // all various types of children provided.\n const checkbox = _checkbox as React.ReactElement<\n CheckboxProps<OptionType>\n >;\n return React.cloneElement(checkbox, {\n onChange: this.handleChange,\n checked: selected.indexOf(checkbox.props.value) >= 0,\n disabled\n });\n });\n\n return (\n <div role=\"checkboxgroup\" aria-label={name} className={className}>\n {_children}\n </div>\n );\n }\n}\n","import { constants } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const wrapperStyle = css({\n position: \"relative\"\n});\n\nexport const dropDownStyle = css({\n minWidth: 100,\n boxShadow: constants.boxShadow.xElevated,\n backgroundColor: colors.white.base,\n borderRadius: constants.borderRadius,\n position: \"absolute\",\n top: \"100%\",\n zIndex: 999,\n transformOrigin: \"top left\"\n});\n","import * as React from \"react\";\nimport { OutsideClickProps } from \"./typings/OutsideClick\";\n\nclass OutsideClick extends React.PureComponent<OutsideClickProps> {\n childRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n handleClick = (e: MouseEvent) => {\n if (\n this.childRef.current &&\n !this.childRef.current.contains(e.target as HTMLElement)\n ) {\n this.props.onOutsideClick();\n }\n };\n\n addListener = () => {\n document.addEventListener(\"mousedown\", this.handleClick);\n };\n\n removeListener = () => {\n document.removeEventListener(\"mousedown\", this.handleClick);\n };\n\n componentDidMount() {\n if (!this.props.disabled) {\n this.addListener();\n }\n }\n\n componentWillUnmount() {\n this.removeListener();\n }\n\n componentDidUpdate(prevProps: OutsideClickProps) {\n if (prevProps.disabled !== this.props.disabled) {\n this.props.disabled ? this.removeListener() : this.addListener();\n }\n }\n\n render() {\n const { className, children } = this.props;\n return (\n <div ref={this.childRef} className={className}>\n {children}\n </div>\n );\n }\n}\n\nexport default OutsideClick;\n","import { State } from \"react-spring\";\n\nexport const animationConfig = {\n from: { opacity: 0, transform: \"scale(0.95)\" },\n enter: { opacity: 1, transform: \"scale(1)\" },\n leave: { opacity: 0, transform: \"scale(0.95)\", pointerEvents: \"none\" },\n config: (_a: boolean, motion: State) =>\n motion === \"leave\" ? { duration: 80 } : { duration: 200 }\n};\n","import * as React from \"react\";\nimport { DropdownProps, DropdownState } from \"./typings/Dropdown\";\nimport { DropDownButton } from \"./Button\";\nimport { dropDownStyle, wrapperStyle } from \"./styles/Dropdown.styles\";\nimport { cx } from \"emotion\";\nimport OutsideClick from \"./OutsideClick\";\nimport { animated } from \"react-spring/renderprops.cjs\";\nimport MountTransition from \"./shared/MountTransition\";\nimport { Manager, Reference, Popper } from \"react-popper\";\nimport { colors } from \"pebble-shared\";\n\nclass DropDown extends React.PureComponent<DropdownProps, DropdownState> {\n state: DropdownState = {\n isOpen: !!this.props.initiallyOpen\n };\n\n static defaultProps: Partial<DropdownProps> = {\n closeOnOutsideClick: true,\n placement: \"bottom-start\",\n modifiers: {\n hide: {\n enabled: false\n },\n preventOverflow: {\n enabled: false\n },\n flip: {\n enabled: false\n }\n }\n };\n\n private toggleDropdown = () => {\n this.setState({\n isOpen: !this.state.isOpen\n });\n };\n\n render() {\n const {\n buttonLabel,\n children,\n labelComponent,\n padding,\n className,\n dropDownClassName,\n isSelected,\n disabled,\n labelClassName,\n controlled,\n onOutsideClick\n } = this.props;\n\n const _isDropDownOpen = controlled\n ? !!this.props.isOpen\n : this.state.isOpen;\n\n return (\n <OutsideClick\n className={cx(wrapperStyle, className)}\n onOutsideClick={() => {\n this.setState({\n isOpen: false\n });\n if (onOutsideClick) onOutsideClick(_isDropDownOpen);\n }}\n disabled={!_isDropDownOpen}\n >\n <Manager>\n <Reference>\n {({ ref }) => (\n <div style={{ display: \"inline-block\", width: \"100%\" }} ref={ref}>\n {labelComponent ? (\n labelComponent({\n isOpen: _isDropDownOpen,\n toggleDropdown: this.toggleDropdown\n })\n ) : (\n <DropDownButton\n isSelected={!!isSelected}\n isOpen={_isDropDownOpen}\n onClick={this.toggleDropdown}\n disabled={disabled}\n className={labelClassName}\n >\n {buttonLabel}\n </DropDownButton>\n )}\n </div>\n )}\n </Reference>\n\n {/* TODO: Add native flag. */}\n <MountTransition visible={_isDropDownOpen}>\n {transitionStyles => (\n <animated.div\n className={cx(dropDownStyle, dropDownClassName)}\n style={{ padding, ...transitionStyles }}\n >\n <Popper {...this.props} positionFixed>\n {({ ref, style, placement, arrowProps }) => {\n const popperWrapperStyle = {\n ...style,\n ...transitionStyles,\n backgroundColor: colors.white.base,\n transform: `${style.transform || \"\"} ${\n transitionStyles.transform || \"\"\n }`,\n transformOrigin: `${arrowProps.style.left || 0}px ${\n arrowProps.style.top || 0\n }px`,\n padding\n };\n\n return (\n <div\n className={cx(dropDownStyle, dropDownClassName)}\n ref={ref}\n style={popperWrapperStyle}\n data-placement={placement}\n >\n {children({\n toggle: this.toggleDropdown,\n isOpen: _isDropDownOpen\n })}\n </div>\n );\n }}\n </Popper>\n </animated.div>\n )}\n </MountTransition>\n </Manager>\n </OutsideClick>\n );\n }\n}\n\nexport default DropDown;\n","import { mixins, typography } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n// import { isDesktop } from \"../../utils\";\n\nconst animation = \"all 0.3s cubic-bezier(.64,.09,.08,1)\";\n\nexport const inputMarginBottom = 20;\n\nexport const wrapperStyle = css({\n position: \"relative\",\n display: \"flex\",\n backgroundColor: colors.white.base,\n width: \"100%\",\n flexDirection: \"column\",\n marginBottom: inputMarginBottom,\n height: 68,\n \"&._pebble_input_wrapper_textarea\": {\n height: 110\n }\n});\n\nexport const inputWrapperStyle = css({\n display: \"flex\",\n alignItems: \"baseline\",\n borderBottom: `1px solid ${colors.gray.lighter}`\n});\n\nexport const inputStyle = css({\n outline: 0,\n border: 0,\n padding: \"24px 0 12px 0\",\n height: 48,\n borderRadius: 0,\n ...typography.normal.regular,\n width: \"100%\",\n ...mixins.textEllipsis,\n \"&:disabled\": {\n backgroundColor: colors.white.base\n },\n .../*#__PURE__*/ mixins.getPlaceholderStyle(colors.gray.light)\n // \"&[type='date']\": {\n // \"-webkit-appearance\": \"textfield\"\n // },\n // \"&[type='date']::-webkit-inner-spin-button, &[type='date']::-webkit-calendar-picker-indicator\": {\n // webkitAppearance: \"none\",\n // display: \"none\"\n // }\n});\n\nexport const inputReadOnlyStyle = css({\n color: colors.gray.dark\n});\n\nexport const inputDisabledStyle = css({\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n color: colors.gray.base\n});\n\nexport const inputTextAreaStyle = css({\n height: 88,\n padding: \"0 0 52px 0\",\n marginTop: 22,\n resize: \"none\"\n});\n\nexport const highlightStyle = css({\n height: 2,\n backgroundColor: colors.violet.base,\n marginTop: -2,\n position: \"relative\",\n width: 0,\n transition: animation,\n zIndex: 9,\n \"&._pebble_input_highlight_state, &._pebble_input_highlight_focused\": {\n width: \"100%\"\n }\n});\n\nexport const labelStyle = css({\n color: colors.gray.base,\n fontSize: 14,\n lineHeight: \"12px\",\n position: \"absolute\",\n transition: animation,\n transform: \"translate(0, 24px)\",\n pointerEvents: \"none\",\n \"&._pebble_input_label_focused\": {\n fontSize: 12,\n lineHeight: \"10px\",\n transform: \"translate(0, 0)\",\n color: colors.gray.dark\n }\n});\n\nexport const messageStyle = css({\n ...typography.s.regular,\n marginTop: 9,\n lineHeight: \"10px\",\n textAlign: \"left\"\n});\n\nexport const loadingStyle = css({\n position: \"relative\",\n top: 4\n});\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport { typography } from \"../../theme\";\nimport { inputMarginBottom } from \"./Input.styles\";\n\nexport const dateClass = css({\n padding: 20,\n width: \"100%\"\n});\n\nexport const dropDownClassName = css({\n marginTop: -inputMarginBottom\n});\n\nexport const inputStyle = css({\n marginBottom: 0\n});\n\nexport const wrapperStyle = css({\n marginBottom: 20\n});\n\nexport const errorStyle = css({\n ...typography.s.bold,\n backgroundColor: colors.red.lightest,\n color: colors.red.darker,\n textAlign: \"left\",\n padding: \"11px 30px\"\n});\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport { InputProps, InputState } from \"./typings/Input\";\nimport {\n highlightStyle,\n labelStyle,\n wrapperStyle,\n messageStyle,\n inputWrapperStyle,\n inputStyle,\n inputReadOnlyStyle,\n inputDisabledStyle,\n inputTextAreaStyle,\n loadingStyle\n} from \"./styles/Input.styles\";\nimport { colors } from \"pebble-shared\";\nimport Loader from \"./Loader\";\n\nfunction getColor(\n error: string | undefined,\n success: string | undefined,\n isUnderlineColor?: boolean\n) {\n let color = colors.gray.dark;\n if (error) {\n color = colors.red.base;\n } else if (success) {\n color = colors.emerald.base;\n } else if (isUnderlineColor) {\n color = colors.violet.base;\n }\n\n return color;\n}\n\nclass Input extends React.PureComponent<InputProps, InputState> {\n readonly state: InputState = {\n isFocused: false\n };\n\n static defaultProps = {\n value: \"\",\n readOnly: false\n };\n\n private addFocus = () => {\n this.setState({\n isFocused: true\n });\n };\n\n private removeFocus = () => {\n this.setState({\n isFocused: false\n });\n };\n\n private handleChange = (\n e:\n | React.ChangeEvent<HTMLInputElement>\n | React.ChangeEvent<HTMLTextAreaElement>\n ) => {\n this.props.onChange(e.target.value || \"\");\n };\n\n render() {\n const {\n type,\n placeholder,\n className,\n inputWrapperClassName,\n inputClassName,\n highlightClassName,\n loadingClassName,\n fixLabelAtTop,\n value,\n readOnly,\n disabled,\n errorMessage,\n successMessage,\n message,\n textArea,\n required,\n onClick,\n loading,\n leftElement,\n rightElement\n } = this.props;\n const { isFocused } = this.state;\n\n const _message = errorMessage || successMessage || message;\n\n const _inputWrapperClassName = cx(inputWrapperStyle, inputWrapperClassName);\n\n const _inputClassName = cx(\n inputStyle,\n {\n [inputDisabledStyle]: !!disabled,\n [inputReadOnlyStyle]: !!readOnly,\n [inputTextAreaStyle]: !!textArea\n },\n inputClassName\n );\n\n const _inputProps = {\n \"aria-label\": placeholder ? placeholder : undefined,\n className: _inputClassName,\n disabled,\n onChange: this.handleChange,\n readOnly,\n value: value || \"\"\n };\n\n const _highlightClassName = cx(\n highlightStyle,\n {\n _pebble_input_highlight_focused: !!isFocused,\n _pebble_input_highlight_state: !!errorMessage || !!successMessage,\n _pebble_input_highlight_read_only: !!readOnly,\n _pebble_input_highlight_disabled: !!disabled\n },\n highlightClassName\n );\n\n const labelClassName = cx(labelStyle, {\n _pebble_input_label_focused: !!(\n isFocused ||\n value ||\n fixLabelAtTop ||\n leftElement\n )\n });\n\n const _wrapperStyle = cx(\n wrapperStyle,\n {\n _pebble_input_wrapper_textarea: !!textArea\n },\n className\n );\n\n const _loadingStyle = cx(loadingStyle, loadingClassName);\n\n return (\n <div\n className={_wrapperStyle}\n onFocus={this.addFocus}\n onBlur={this.removeFocus}\n onClick={onClick}\n >\n <div className={_inputWrapperClassName}>\n {leftElement?.()}\n\n {this.props.textArea ? (\n <textarea {..._inputProps} {...this.props.inputProps} />\n ) : (\n <input type={type} {..._inputProps} {...this.props.inputProps} />\n )}\n\n {loading && (\n <Loader\n color={colors.violet.base}\n scale={0.6}\n className={_loadingStyle}\n />\n )}\n\n {rightElement?.()}\n </div>\n\n {!!placeholder && (\n <label className={labelClassName}>\n {placeholder}\n {required && (\n <span style={{ color: colors.red.base }}> *</span>\n )}\n </label>\n )}\n\n <div\n className={_highlightClassName}\n style={{\n backgroundColor: getColor(errorMessage, successMessage, true)\n }}\n />\n\n {_message && (\n <div\n className={messageStyle}\n style={{ color: getColor(errorMessage, successMessage) }}\n >\n {_message}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default Input;\n","import * as React from \"react\";\nimport { format, parseISO } from \"date-fns\";\nimport { DateInputProps } from \"./typings/DateInput\";\nimport Input from \"./Input\";\n\nexport default class NativeDateInput extends React.PureComponent<\n DateInputProps\n> {\n private onDateInputChange = (value: string) => {\n const date = parseISO(value);\n this.props.onChange(date && date.getTime());\n };\n\n render() {\n const { inputProps, placeholder, value, disabled } = this.props;\n\n return (\n <Input\n onChange={this.onDateInputChange}\n type=\"date\"\n // This format does not define the presentation format.\n // value will always be in YYYY-MM-DD format.\n // https://developers.google.com/web/updates/2012/08/Quick-FAQs-on-input-type-date-in-Google-Chrome\n value={value && format(value, \"yyyy-MM-dd\")}\n placeholder={placeholder}\n fixLabelAtTop\n {...inputProps}\n disabled={disabled}\n />\n );\n }\n}\n","import * as React from \"react\";\n\ninterface UserAgentInfoProviderProps {\n userAgent: string;\n}\n\n// This is an object because more attributes might get added.\n// Don't change to string.\nexport interface UserAgentInfo {\n // Add more attributes of the userAgent as neccessary.\n // Eg. isMobile, isDesktop, isBot etc.\n userAgent: string;\n}\n\nconst defaultContext: UserAgentInfo = {\n userAgent: \"\"\n};\n\nexport const UserAgentInfoContext = /*@__PURE__*/ React.createContext<\n UserAgentInfo\n>(defaultContext);\n\nfunction computeUserAgentInfo(userAgent: string): UserAgentInfo {\n return {\n userAgent\n };\n}\n\nexport class UserAgentInfoProvider extends React.PureComponent<\n UserAgentInfoProviderProps,\n UserAgentInfo\n> {\n // State is used to avoid creating new objects in render.\n // Can memoize computeUserAgentInfo but then might consume\n // a lot of memory on server.\n constructor(props: UserAgentInfoProviderProps) {\n super(props);\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n this.state = computeUserAgentInfo(navigator.userAgent);\n } else if (props.userAgent) {\n this.state = computeUserAgentInfo(props.userAgent);\n } else {\n this.state = defaultContext;\n }\n }\n render() {\n return (\n <UserAgentInfoContext.Provider value={this.state}>\n {this.props.children}\n </UserAgentInfoContext.Provider>\n );\n }\n}\n","import * as React from \"react\";\nimport { DateInputProps, DateInputState } from \"./typings/DateInput\";\nimport DropDown from \"./DropDown\";\nimport {\n dateClass,\n dropDownClassName,\n inputStyle,\n wrapperStyle,\n errorStyle\n} from \"./styles/Date.styles\";\nimport Calendar from \"./Calendar\";\nimport Input from \"./Input\";\nimport { Rifm } from \"rifm\";\nimport { startOfDay, format } from \"date-fns\";\nimport NativeDateInput from \"./NativeDateInput\";\nimport { UserAgentInfoContext } from \"../utils/useragent\";\nimport { cx } from \"emotion\";\n\nconst noop = () => {};\n\nfunction dateFormat(str: string) {\n const clean = str.replace(/[^\\d]+/gi, \"\");\n const chars = clean.split(\"\");\n return chars.reduce(\n (r, v, index) =>\n `${r}${v}${index === 1 || index === 3 ? \"/\" : \"\"}`.substr(0, 10),\n \"\"\n );\n}\n\nconst modifiers = {\n preventOverflow: {\n enabled: false\n },\n flip: {\n enabled: false\n }\n};\n\nexport default class DateInput extends React.PureComponent<\n DateInputProps & typeof DateInput.defaultProps,\n DateInputState\n> {\n static defaultProps = {\n placement: \"bottom-start\"\n };\n state: Readonly<DateInputState> = {\n stringInput: \"\"\n };\n\n static getDerivedStateFromProps(\n props: DateInputProps,\n state: DateInputState\n ): Partial<DateInputState> | null {\n let newState: Partial<DateInputState> | null = null;\n if (props.value !== state.propsValue) {\n newState = {\n propsValue: props.value,\n stringInput: props.value ? format(props.value, \"dd/MM/yyyy\") : \"\"\n };\n }\n return newState;\n }\n\n private onCalendarDateChange = (date: Date) => {\n this.props.onChange(date.getTime());\n };\n\n private onInputChange = (input: string) => {\n this.setState({ stringInput: input });\n // TODO: Modify when close to year 9999\n if (input.length === 10) {\n // RIFM will ensure the length of the input.\n const date = startOfDay(new Date());\n date.setFullYear(\n parseInt(input.substr(6, 4), 10),\n parseInt(input.substr(3, 5), 10) - 1,\n parseInt(input.substr(0, 2), 10)\n );\n this.props.onChange(date.getTime());\n }\n };\n\n render() {\n const {\n calendarProps,\n inputProps,\n placeholder,\n value: propsValue,\n disabled,\n errorMessage,\n placement,\n wrapperClassName,\n initiallyOpen,\n onOutsideClick,\n controlled,\n isOpen\n } = this.props;\n\n const _wrapperClassName = cx(wrapperStyle, wrapperClassName);\n\n const _dropDownClassName = cx(\n dropDownClassName,\n this.props.dropDownClassName\n );\n return (\n <DropDown\n dropDownClassName={_dropDownClassName}\n labelComponent={({ toggleDropdown }) => (\n <Rifm\n value={this.state.stringInput}\n onChange={this.onInputChange}\n format={dateFormat}\n >\n {({ value, onChange }) => (\n <Input\n onChange={noop}\n type={\"tel\"}\n value={value}\n placeholder={placeholder}\n onClick={() => {\n if (disabled || controlled) return;\n toggleDropdown();\n }}\n fixLabelAtTop\n {...inputProps}\n inputProps={{\n placeholder: \"DD/MM/YYYY\",\n ...(inputProps && inputProps.inputProps),\n onChange\n }}\n className={cx(inputStyle, inputProps && inputProps.className)}\n disabled={disabled}\n />\n )}\n </Rifm>\n )}\n className={_wrapperClassName}\n placement={placement}\n modifiers={modifiers}\n initiallyOpen={initiallyOpen}\n onOutsideClick={onOutsideClick}\n controlled={controlled}\n isOpen={isOpen}\n >\n {({ toggle }) => (\n <>\n <Calendar\n hideShadow\n className={dateClass}\n selected={propsValue ? new Date(propsValue) : undefined}\n {...calendarProps}\n range={false}\n onChange={date => {\n this.onCalendarDateChange(date);\n if (controlled) {\n return;\n }\n toggle();\n }}\n />\n {errorMessage && <div className={errorStyle}>{errorMessage}</div>}\n </>\n )}\n </DropDown>\n );\n }\n}\n\nfunction checkDateInputSupport(): boolean {\n try {\n const input = document.createElement(\"input\");\n const type = \"date\";\n input.setAttribute(\"type\", \"date\");\n input.value = \"\\x01\";\n return (\n input.type === type && (input.value !== \"\\x01\" || !input.checkValidity())\n );\n } catch (e) {\n return true;\n }\n}\n\nconst hasDateInputSupport = /*@__PURE__*/ checkDateInputSupport();\n\n// tslint:disable-next-line max-classes-per-file\nexport class BrowserBasedDateInput extends React.PureComponent<DateInputProps> {\n static contextType = UserAgentInfoContext;\n render() {\n return (\n <UserAgentInfoContext.Consumer>\n {({ userAgent }: { userAgent: string }) => {\n if (/Android|iPhone|iPad/i.test(userAgent) && hasDateInputSupport) {\n return <NativeDateInput {...this.props} />;\n }\n return <DateInput {...this.props} />;\n }}\n </UserAgentInfoContext.Consumer>\n );\n }\n}\n","import * as React from \"react\";\nimport { LogoProps } from \"./typings/Logo\";\n\nconst Logo: React.FunctionComponent<LogoProps> = ({\n height = 40,\n color = \"#000000\"\n}) => {\n return (\n <svg\n version=\"1.1\"\n id=\"Layer_1\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n height={height}\n viewBox=\"0 0 923 264\"\n xmlSpace=\"preserve\"\n style={{ fill: color }}\n >\n <path d=\" M494.997833,104.989197 C504.561310,120.926979 514.090942,136.486954 524.203430,152.998642 C514.215454,152.998642 505.605194,153.185226 497.019348,152.811401 C495.619934,152.750473 494.014099,150.403091 493.036224,148.789719 C484.614990,134.895966 476.350433,120.907204 467.908600,107.026161 C467.303131,106.030617 465.683411,105.122147 464.509827,105.089546 C457.870575,104.905121 451.223511,105.000366 444.182617,105.000366 C444.182617,120.944054 444.182617,136.684677 444.182617,152.710907 C435.720703,152.710907 427.648346,152.710907 419.286377,152.710907 C419.286377,108.048126 419.286377,63.315472 419.286377,18.226318 C420.622955,18.154409 422.057953,18.011358 423.493042,18.010042 C440.489777,17.994438 457.487518,18.118172 474.482910,17.967182 C491.918823,17.812281 510.099304,31.877623 513.942261,49.596054 C517.227051,64.741020 514.518250,78.747162 503.870880,90.407806 C500.691193,93.890068 496.213104,96.186760 491.701843,99.486000 C492.604675,100.904488 493.784332,102.757935 494.997833,104.989197 M477.814667,80.712967 C478.224762,80.477539 478.625977,80.224724 479.046295,80.009270 C486.206573,76.338890 489.690338,70.406403 490.012604,62.439629 C490.369293,53.622215 487.772491,46.389954 479.129730,42.646801 C467.782715,37.732441 455.882019,40.926376 444.255676,39.921638 C444.255676,54.288414 444.255676,68.004913 444.255676,82.487190 C455.369232,81.977089 466.201569,81.479897 477.814667,80.712967 z\" />\n <path d=\" M243.000000,80.999062 C243.000000,59.861134 243.000000,39.223000 243.000000,18.292778 C251.270828,18.292778 259.342133,18.292778 267.708313,18.292778 C267.708313,62.935493 267.708313,107.662903 267.708313,152.673645 C263.089844,148.573166 258.427490,144.595566 253.946381,140.423279 C242.820068,130.063721 231.814224,119.574814 220.689880,109.213112 C207.414932,96.848251 194.075836,84.552162 180.730927,72.262764 C179.828751,71.431946 178.644516,70.907402 177.061050,69.904449 C177.061050,97.827423 177.061050,125.180206 177.061050,152.764984 C168.609085,152.764984 160.539383,152.764984 152.233948,152.764984 C152.233948,107.919228 152.233948,63.162922 152.233948,17.442804 C155.759659,20.352665 159.058594,22.797844 162.038971,25.583809 C174.117966,36.874847 186.066513,48.305309 198.126877,59.616413 C207.151505,68.080421 216.276535,76.437363 225.351303,84.847969 C229.948792,89.108955 234.500137,93.420685 239.151474,97.621864 C240.155533,98.528748 241.499756,99.059021 243.000000,99.948097 C243.000000,93.455132 243.000000,87.476997 243.000000,80.999062 z\" />\n <path d=\" M910.661926,153.000000 C903.038269,153.000000 895.869080,153.138168 888.713196,152.891953 C887.143921,152.837967 885.068787,151.816345 884.161133,150.563354 C871.556335,133.165085 859.116211,115.647606 846.629089,98.164024 C845.966187,97.235863 845.244202,96.349922 844.346069,95.178902 C838.674072,101.575691 833.524719,107.255989 828.577393,113.107101 C827.879700,113.932274 828.026184,115.590805 828.022156,116.864372 C827.984802,128.685226 828.000000,140.506256 828.000000,152.663452 C819.820374,152.663452 811.746399,152.663452 803.334839,152.663452 C803.334839,108.149933 803.334839,63.420792 803.334839,18.345610 C811.160645,18.345610 819.235168,18.345610 827.678711,18.345610 C827.678711,38.506351 827.678711,58.915283 827.678711,80.676361 C832.547607,75.480446 836.691406,71.259323 840.605835,66.835304 C847.007141,59.600666 853.248840,52.224957 859.577087,44.925423 C866.231323,37.249908 872.899475,29.586329 879.580261,21.933868 C881.789062,19.403814 884.046814,17.641920 887.978638,17.862658 C896.099915,18.318590 904.264587,18.000000 913.318359,18.000000 C909.295166,22.802053 905.802063,27.189381 902.080322,31.373291 C890.499390,44.392174 878.821899,57.325096 867.209778,70.316254 C865.692383,72.013901 864.110046,73.728264 863.004211,75.686913 C862.464294,76.643105 862.443909,78.537003 863.050659,79.400421 C873.732971,94.599892 884.529419,109.719383 895.342529,124.826630 C901.892395,133.977722 908.512756,143.078461 915.677795,153.000000 C913.601685,153.000000 912.361450,153.000000 910.661926,153.000000 z\" />\n <path d=\" M596.929199,18.000000 C624.058044,18.298351 650.447327,36.316006 658.817078,66.054832 C665.643127,90.308754 660.427124,112.346733 643.258606,131.300949 C632.912842,142.722717 619.844910,149.712357 605.046021,151.664856 C586.753418,154.078339 569.095459,151.058884 553.696228,139.311996 C538.877991,128.008316 529.706116,113.117035 527.302063,95.041100 C524.859924,76.679077 528.575745,59.205280 540.407104,43.965412 C551.615723,29.527632 566.369629,21.425211 583.969360,18.135132 C587.995056,17.382574 592.278381,18.008503 596.929199,18.000000 M589.858582,38.001751 C577.114685,40.207760 566.024475,45.146076 557.696716,55.676926 C548.080322,67.837151 544.472290,81.513992 548.266174,96.258415 C555.857544,125.761482 588.236450,140.607986 614.995605,127.095215 C642.688599,113.110863 650.560669,76.721657 628.043457,52.695580 C618.120605,42.107773 605.447449,37.209694 589.858582,38.001751 z\" />\n <path d=\" M283.337097,152.999969 C279.213562,153.293060 279.707184,151.671585 280.909821,149.218765 C285.791931,139.261703 290.573547,129.254608 295.313782,119.228897 C306.637177,95.279808 317.914398,71.308922 329.213989,47.348579 C333.458374,38.348545 337.705627,29.349840 341.974884,20.361595 C342.377808,19.513321 342.947998,18.744511 343.941742,17.118765 C365.343903,62.617363 386.433380,107.451149 407.857971,152.997406 C399.175629,152.997406 391.533783,153.206604 383.924042,152.806000 C382.542206,152.733246 380.859955,150.374023 380.056152,148.712479 C376.775543,141.930954 373.782043,135.010529 370.662262,128.095825 C352.590302,128.095825 334.607300,128.095825 316.238373,128.095825 C313.145264,135.157791 309.992004,142.322128 306.871490,149.500717 C305.799316,151.967163 304.361877,153.271423 301.288788,153.095932 C295.475830,152.763992 289.630402,152.999985 283.337097,152.999969 M357.233612,105.000000 C358.791687,104.927078 360.349762,104.854156 362.184387,104.768295 C355.774658,90.623322 349.593140,76.982010 343.472656,63.475372 C337.296448,77.078926 331.059998,90.815193 324.619904,105.000000 C335.701355,105.000000 345.995087,105.000000 357.233612,105.000000 z\" />\n <path d=\" M553.000000,182.000000 C673.785400,182.000000 794.070862,182.000000 914.678101,182.000000 C914.678101,184.230164 914.678101,186.300903 914.678101,188.688812 C613.412109,188.688812 311.932343,188.688812 10.226280,188.688812 C10.226280,186.607132 10.226280,184.537598 10.226280,182.000000 C191.032730,182.000000 371.766357,182.000000 553.000000,182.000000 z\" />\n <path d=\" M763.271729,124.290527 C767.045471,121.735161 770.525879,119.428955 773.908997,117.187172 C778.802979,122.189301 783.750854,127.246490 788.718750,132.324173 C767.428406,157.174423 722.870789,159.476486 696.633118,136.089890 C665.316711,108.176437 666.941467,60.746155 695.935547,34.601543 C723.733887,9.535212 768.332520,13.758317 788.770752,37.783039 C783.831726,42.699677 778.906555,47.602581 773.740417,52.745323 C769.980896,50.332146 765.807495,47.358677 761.369019,44.855141 C741.952759,33.903320 715.525085,41.071518 703.154663,60.489037 C685.530090,88.153946 701.108704,123.349464 733.290039,129.719406 C743.248718,131.690613 753.836243,130.568649 763.271729,124.290527 z\" />\n <path d=\" M89.065086,42.809494 C96.380394,58.125313 103.711418,73.433655 111.003220,88.760651 C113.898926,94.847282 116.676910,100.989853 119.562057,107.081589 C126.698242,122.148979 133.865372,137.201721 141.216385,152.673538 C132.467331,152.673538 124.089355,152.673538 115.293709,152.673538 C112.294876,146.018585 109.007797,139.092819 106.066925,132.023041 C104.824631,129.036591 103.250557,127.872192 99.885086,127.913086 C83.560928,128.111420 67.233139,128.010376 50.435722,127.731995 C53.332184,120.586601 56.699547,113.724609 60.528751,106.926247 C72.245125,106.989876 83.499664,106.989876 95.093788,106.989876 C89.184761,93.734802 83.470062,80.915657 77.693474,67.703644 C81.442749,59.143681 85.253914,50.976589 89.065086,42.809494 z\" />\n <path\n fill=\"#9B5192\"\n d=\" M60.066914,106.862617 C56.699547,113.724609 53.332184,120.586601 49.975365,127.830383 C46.390110,135.928253 42.794308,143.644318 38.582245,151.670212 C29.939066,151.944855 21.912146,151.909698 13.885223,151.874542 C14.364792,150.326294 14.663538,148.692291 15.351014,147.242645 C25.878349,125.044159 36.497864,102.889351 47.010223,80.683807 C56.320847,61.016727 65.518562,41.296207 74.797310,21.613977 C75.254089,20.645039 76.009422,19.816847 77.150719,18.161825 C81.353874,26.587799 85.218155,34.334435 89.073761,42.445282 C85.253914,50.976589 81.442749,59.143681 77.410156,67.893570 C74.926964,73.366013 72.602997,78.228050 70.417641,83.151611 C66.919067,91.033821 63.512421,98.956841 60.066914,106.862617 z\"\n />\n <path d=\" M441.008850,232.067917 C441.859650,233.178818 442.676575,233.916138 443.960571,235.074982 C443.960571,228.834839 443.960571,223.126495 443.960571,217.216690 C446.746246,217.216690 449.148438,217.216690 451.777283,217.216690 C451.777283,228.060822 451.777283,238.799179 451.777283,249.556839 C446.555908,251.307800 443.539734,249.163025 440.813141,244.717133 C437.901947,239.970230 433.996094,235.833313 430.053833,230.833252 C430.053833,237.505173 430.053833,243.535461 430.053833,249.776031 C427.268127,249.776031 424.865784,249.776031 422.229065,249.776031 C422.229065,238.954025 422.229065,228.215561 422.229065,217.505035 C427.881287,215.105011 430.937622,218.569809 433.853638,222.441528 C436.195007,225.550217 438.598877,228.611816 441.008850,232.067917 z\" />\n <path d=\" M480.611023,250.855804 C466.486420,246.741333 464.235352,233.059265 469.878815,224.348862 C473.362854,218.971481 481.955841,215.414520 489.251343,217.102463 C495.944031,218.650940 501.413391,225.279755 502.058289,231.776215 C503.193512,243.211594 494.290314,252.485565 480.611023,250.855804 M479.641663,242.093857 C480.196045,242.392883 480.719238,242.793564 481.309753,242.975006 C486.485413,244.565338 492.334015,241.497101 493.854309,236.428238 C495.142365,232.133591 491.113586,225.501190 486.384552,224.131195 C482.331604,222.957062 478.013245,226.328064 475.865784,231.425522 C473.932770,236.013977 476.349152,238.723328 479.641663,242.093857 z\" />\n <path d=\" M556.830688,220.671371 C563.960571,216.598984 570.755188,215.117706 578.152161,219.504379 C586.290405,224.330597 588.809448,235.153992 582.810120,244.522430 C578.616943,251.070480 566.211304,253.016159 558.980957,248.534744 C549.128967,242.428436 548.517761,228.844345 556.830688,220.671371 M563.053223,241.582840 C569.771973,245.575500 577.480652,242.045731 577.999329,234.739136 C578.284363,230.724152 574.729004,225.484634 570.641052,224.257629 C566.026550,222.872559 563.110046,225.826492 560.684143,228.941635 C557.789612,232.658585 558.619202,236.837173 563.053223,241.582840 z\" />\n <path d=\" M621.920654,242.977264 C623.043030,241.531067 623.742004,240.106934 624.714966,238.124420 C621.661743,238.124420 619.686951,238.124420 617.355530,238.124420 C617.355530,235.889313 617.355530,233.820145 617.355530,231.364777 C621.898682,231.364777 626.750366,231.364777 631.999451,231.364777 C631.999451,235.509216 632.297546,239.662354 631.843262,243.731491 C631.676697,245.222977 629.995178,246.970856 628.546631,247.821533 C621.489746,251.965683 614.164612,252.487350 607.089661,247.963333 C601.680115,244.504196 599.843994,239.031921 600.023804,232.854446 C600.213135,226.351593 604.687683,219.891190 610.625610,218.053513 C617.610840,215.891724 624.343018,216.149567 630.321594,221.656174 C628.911133,223.513733 627.666199,225.153275 626.034607,227.302139 C620.278564,223.864441 614.049866,221.817856 609.474792,229.142044 C607.304932,232.615738 607.451233,236.545197 610.357971,239.852081 C613.358276,243.265472 616.892029,245.111710 621.920654,242.977264 z\" />\n <path d=\" M317.809021,249.999893 C310.046082,250.000000 302.765198,250.000000 295.244141,250.000000 C295.244141,238.979523 295.244141,228.261002 295.244141,217.270355 C303.636566,217.270355 312.027039,217.270355 320.709930,217.270355 C320.709930,219.271988 320.709930,221.339249 320.709930,223.803162 C315.110260,223.803162 309.367645,223.803162 303.247101,223.803162 C303.134094,225.898331 303.040283,227.638260 302.925507,229.766098 C307.831268,229.766098 312.579559,229.766098 317.662750,229.766098 C317.662750,232.198044 317.662750,234.266022 317.662750,236.881744 C313.073761,236.881744 308.191681,236.881744 303.197266,236.881744 C303.197266,239.161514 303.197266,240.896759 303.197266,243.006958 C309.128143,243.006958 314.877472,243.006958 321.425781,243.006958 C319.668274,245.531113 323.788300,249.452209 317.809021,249.999893 z\" />\n <path d=\" M378.000000,223.094299 C378.000000,220.954681 378.000000,219.302032 378.000000,217.325104 C380.546875,217.325104 382.954498,217.325104 385.757751,217.325104 C385.757751,221.187363 385.757751,225.272171 385.757751,229.678406 C390.208282,229.678406 394.282074,229.678406 398.763367,229.678406 C398.763367,225.790314 398.763367,221.712875 398.763367,217.318512 C401.553162,217.318512 403.958832,217.318512 406.690369,217.318512 C406.690369,227.863983 406.690369,238.611008 406.690369,249.680099 C404.445190,249.680099 402.037170,249.680099 399.233124,249.680099 C399.233124,245.803009 399.233124,241.718018 399.233124,237.316925 C394.782227,237.316925 390.708527,237.316925 386.227539,237.316925 C386.227539,241.218948 386.227539,245.297058 386.227539,249.686401 C383.436920,249.686401 381.027344,249.686401 378.000000,249.686401 C378.000000,241.112595 378.000000,232.346939 378.000000,223.094299 z\" />\n <path d=\" M359.708740,249.073227 C347.436340,254.958038 333.078064,247.206329 334.075928,232.758286 C334.522003,226.299698 337.499298,220.647110 343.747742,218.252869 C350.124664,215.809402 356.840454,215.909943 362.614685,220.393890 C363.353882,220.967896 363.387848,223.220810 362.926605,224.364456 C362.411011,225.642899 360.958405,226.543411 360.268860,227.246231 C356.768341,226.106094 353.571472,224.366577 350.325714,224.270020 C348.383575,224.212250 346.095642,226.460327 344.438568,228.140778 C341.315125,231.308319 341.327454,236.069565 344.057251,239.533066 C348.134460,244.706131 351.119690,244.800873 360.478455,239.757782 C361.646271,241.337662 362.919037,243.059540 364.418854,245.088562 C363.365173,246.039978 361.729553,247.516846 359.708740,249.073227 z\" />\n <path d=\" M264.027283,248.734833 C264.003387,240.630539 264.003387,233.006439 264.003387,224.997635 C260.532990,224.997635 257.451202,224.997635 254.193878,224.997635 C254.193878,222.200241 254.193878,219.794647 254.193878,217.201965 C263.468353,217.201965 272.548737,217.201965 281.801941,217.201965 C281.801941,219.810669 281.801941,222.216476 281.801941,225.013306 C278.533356,225.013306 275.443634,225.013306 271.982727,225.013306 C271.982727,233.480179 271.982727,241.566605 271.982727,250.312714 C269.036621,249.904999 266.543884,249.560013 264.027283,248.734833 z\" />\n <path d=\" M643.670410,220.212387 C642.890015,219.179291 642.388611,218.429306 641.832458,217.597321 C653.404114,213.870346 654.102295,224.179657 658.613647,229.641968 C660.169250,226.883835 661.989197,224.091782 663.377991,221.099655 C665.866577,215.737961 670.372314,216.856125 675.311768,217.249817 C672.107605,222.304947 669.616577,227.621902 665.864075,231.808121 C661.047791,237.181091 662.229797,243.327560 661.953979,249.689301 C659.761169,249.689301 657.692139,249.689301 655.263306,249.689301 C655.185791,248.631683 654.862183,247.330673 655.039246,246.101776 C655.890930,240.189178 653.628052,235.356949 650.288818,230.709564 C647.955872,227.462799 646.047485,223.911041 643.670410,220.212387 z\" />\n <path d=\" M524.000000,235.931824 C524.000000,238.408676 524.000000,240.393753 524.000000,242.782944 C529.231201,242.782944 534.307495,242.782944 539.690186,242.782944 C539.690186,245.250183 539.690186,247.321182 539.690186,249.699005 C532.127014,249.699005 524.375610,249.699005 516.310547,249.699005 C516.310547,239.097046 516.310547,228.358200 516.310547,217.308502 C518.575562,217.308502 520.980957,217.308502 524.000000,217.308502 C524.000000,223.233017 524.000000,229.336533 524.000000,235.931824 z\" />\n </svg>\n );\n};\n\nexport default Logo;\n","import { css } from \"emotion\";\nimport { constants, typography } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nexport const toastWrapper = css({\n position: \"fixed\",\n borderRadius: constants.borderRadius,\n ...typography.normal.regular,\n color: colors.white.base,\n display: \"flex\",\n alignItems: \"center\",\n padding: \"15px 20px\",\n zIndex: 99999,\n\n \"> i\": {\n marginRight: 10\n }\n});\n","import * as React from \"react\";\nimport { toastWrapper } from \"./styles/Toast.styles\";\nimport { colors } from \"pebble-shared\";\nimport {\n ToastProps,\n ToastState,\n ToastType,\n ToastPosition\n} from \"./typings/Toast\";\nimport { Transition, animated } from \"react-spring/renderprops.cjs\";\nimport { cx } from \"emotion\";\nimport mitt from \"mitt\";\nimport { animationConfig } from \"../utils/animation\";\n\nconst emitter = /*#__PURE__*/ mitt();\n\nexport const _colors = {\n success: colors.emerald.base,\n error: colors.red.base\n};\n\nconst toastTransitionsLeft = {\n from: { transform: \"translateX(-10px)\" },\n enter: { transform: \"translateX(0)\" },\n leave: { transform: \"translateX(-10px)\" }\n};\n\nconst toastTransitionsRight = {\n from: { transform: \"translateX(10px)\" },\n enter: { transform: \"translateX(0)\" },\n leave: { transform: \"translateX(10px)\" }\n};\n\nconst customStyles = {\n TOP: {\n style: {\n top: 20,\n left: \"50%\"\n },\n\n transitions: {\n from: { transform: \"translateX(-50%) translateY(-10px)\" },\n enter: { transform: \"translateX(-50%) translateY(0)\" },\n leave: { transform: \"translateX(-50%) translateY(-10px)\" }\n }\n },\n\n TOP_LEFT: {\n style: {\n top: 20,\n left: 20\n },\n\n transitions: toastTransitionsLeft\n },\n\n TOP_RIGHT: {\n style: {\n top: 20,\n right: 20\n },\n\n transitions: toastTransitionsRight\n },\n\n BOTTOM: {\n style: {\n bottom: 20,\n left: \"50%\"\n },\n\n transitions: {\n from: { transform: \"translateX(-50%) translateY(10px)\" },\n enter: { transform: \"translateX(-50%) translateY(0)\" },\n leave: { transform: \"translateX(-50%) translateY(10px)\" }\n }\n },\n\n BOTTOM_LEFT: {\n style: {\n bottom: 20,\n left: 20\n },\n\n transitions: toastTransitionsLeft\n },\n\n BOTTOM_RIGHT: {\n style: {\n bottom: 20,\n right: 20\n },\n\n transitions: toastTransitionsRight\n }\n};\n\ntype EventType = Partial<ToastState> & {\n text: string;\n time?: number;\n position: ToastPosition;\n};\n\nclass Toast extends React.PureComponent<ToastProps, ToastState> {\n static show(\n text: string,\n type: ToastType,\n { time, position }: { time?: number; position?: ToastPosition } = {}\n ) {\n emitter.emit(\"showToast\", { text, type, time, position });\n }\n\n showTimer?: number | null;\n\n static hide() {\n emitter.emit(\"hideToast\");\n }\n\n state: ToastState = {\n text: \"\",\n type: \"success\",\n show: false,\n position: \"BOTTOM\"\n };\n\n componentDidMount() {\n emitter.on<EventType>(\"showToast\", this.show);\n emitter.on<EventType>(\"hideToast\", this.hide);\n }\n\n componentWillUnmount() {\n emitter.off<EventType>(\"showToast\", this.show);\n emitter.off(\"hideToast\", this.hide);\n }\n\n private show = ({ text, type = \"success\", position, time }: EventType) => {\n this.setState({\n text,\n type,\n position,\n show: true\n });\n\n if (this.showTimer) {\n clearTimeout(this.showTimer);\n this.showTimer = null;\n }\n\n this.showTimer = window.setTimeout(\n () =>\n this.setState({\n show: false\n }),\n time ? time : this.props.defaultTime || 5000\n );\n };\n\n private hide = () => this.setState({ show: false });\n\n render() {\n const bColor = _colors[this.state.type];\n\n const iconClass = cx(\"pi\", {\n \"pi-radio-check-filled\": this.state.type === \"success\",\n \"pi-close-circle-filled\": this.state.type === \"error\"\n });\n\n const position =\n this.state.position || this.props.defaultPosition || \"BOTTOM\";\n\n return (\n <Transition\n native\n items={this.state.show}\n key={position}\n from={{\n opacity: 0,\n ...customStyles[position].transitions.from\n }}\n enter={{\n opacity: 1,\n ...customStyles[position].transitions.enter\n }}\n leave={{\n opacity: 0,\n pointerEvents: \"none\",\n ...customStyles[position].transitions.leave\n }}\n config={animationConfig.config}\n >\n {show =>\n show &&\n (styles => (\n <animated.div\n className={cx(toastWrapper, this.props.className)}\n style={{\n backgroundColor: bColor,\n ...(styles as React.CSSProperties),\n ...customStyles[position].style\n }}\n >\n <i className={iconClass} />\n {this.state.text}\n </animated.div>\n ))\n }\n </Transition>\n );\n }\n}\n\nexport default Toast;\n","import { css } from \"emotion\";\nimport { constants, typography } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nexport const messageWrapper = css({\n borderRadius: constants.borderRadius,\n ...typography.normal.regular,\n color: colors.white.base,\n height: 46,\n display: \"flex\",\n alignItems: \"center\",\n padding: 20,\n\n \"> i\": {\n marginRight: 10\n }\n});\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport { _colors } from \"./Toast\";\nimport { messageWrapper } from \"./styles/Message.styles\";\nimport { AlertProps } from \"./typings/Message\";\n\nconst Message: React.FunctionComponent<AlertProps> = ({\n intent,\n className,\n text\n}) => {\n const bColor = _colors[intent];\n\n const iconClass = cx(\"pi\", {\n \"pi-radio-check-filled\": intent === \"success\",\n \"pi-close-circle-filled\": intent === \"error\"\n });\n\n return (\n <div\n className={cx(messageWrapper, className)}\n style={{\n backgroundColor: bColor\n }}\n >\n <i className={iconClass} />\n {text}\n </div>\n );\n};\n\nexport default Message;\n","import * as React from \"react\";\nimport { ModalProps } from \"./typings/Modal\";\nimport { modalContainer } from \"./styles/Modal.styles\";\nimport { cx, css } from \"emotion\";\nimport isBrowser from \"is-in-browser\";\nimport * as ReactDOM from \"react-dom\";\nimport MountTransition from \"./shared/MountTransition\";\n\nclass Modal extends React.PureComponent<ModalProps> {\n private node = isBrowser ? document.createElement(\"div\") : null;\n\n componentDidMount() {\n if (this.node) {\n document.body.appendChild(this.node);\n }\n }\n\n componentWillUnmount() {\n if (this.node) {\n document.body.removeChild(this.node);\n }\n }\n\n componentDidUpdate(prevProps: ModalProps) {\n if (prevProps.visible === this.props.visible) return;\n\n if (this.props.visible) {\n document.getElementsByTagName(\"body\")[0].style.overflow = \"hidden\";\n } else {\n document.getElementsByTagName(\"body\")[0].style.overflow = \"\";\n }\n }\n\n render(): React.ReactNode {\n if (!isBrowser) return null;\n\n const { children, visible, backDropClassName, modalClassName } = this.props;\n const node = this.node;\n\n return ReactDOM.createPortal(\n // tslint:disable-next-line:jsx-wrap-multiline\n <MountTransition visible={visible}>\n {transitionStyles => (\n <div\n style={{\n opacity: transitionStyles.opacity\n }}\n className={cx(modalContainer, backDropClassName)}\n >\n <div\n className={cx(\n css({\n transform: transitionStyles.transform\n }),\n modalClassName\n )}\n >\n {children}\n </div>\n </div>\n )}\n </MountTransition>,\n node as NonNullable<typeof node>\n );\n }\n}\n\nexport default Modal;\n","import { mixins, typography } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const rowWrapper = css({\n ...typography.normal.regular,\n cursor: \"pointer\",\n padding: \"12px 18px\",\n position: \"relative\",\n lineHeight: \"28px\",\n zIndex: 999,\n ...mixins.textEllipsis,\n alignItems: \"center\",\n display: \"flex\",\n \"&:last-of-type\": {\n border: 0\n },\n \"&:hover\": {\n backgroundColor: colors.gray.lightest\n }\n});\n\nexport const labelWrap = css({\n userSelect: \"none\",\n flexGrow: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n});\n\nexport const activeRow = css({\n backgroundColor: colors.gray.lightest\n});\n\nexport const selectedRow = css({\n color: colors.violet.base,\n ...typography.normal.bold\n});\n\nexport const advancedActionsWrapper = css({\n display: \"flex\",\n justifyContent: \"space-around\",\n fontSize: \"12px\",\n color: colors.gray.dark\n});\n","import * as React from \"react\";\nimport { OptionProps } from \"./typings/Option\";\nimport Control from \"./shared/Control\";\nimport { cx, css } from \"emotion\";\nimport {\n activeRow,\n rowWrapper,\n selectedRow,\n labelWrap\n} from \"./styles/Options.styles\";\nimport Ink from \"react-ink\";\nimport { colors } from \"pebble-shared\";\n\nconst defaultProps = {\n rightElement: <T extends unknown>({\n isSelected,\n multiSelect,\n indeterminate,\n iconClassName\n }: OptionProps<T>) => {\n const iconClass = cx(\n \"pi\",\n {\n \"pi-checkbox-selected\": !indeterminate && isSelected,\n \"pi-checkbox-unselected\": !indeterminate && !isSelected,\n \"pi-checkbox-indeterminate\": !!indeterminate\n },\n css({\n marginLeft: \"10px\",\n color:\n indeterminate || isSelected ? colors.violet.base : colors.gray.light,\n fontSize: \"20px\"\n })\n );\n return multiSelect ? <i className={cx(iconClass, iconClassName)} /> : null;\n }\n};\n\nclass Option<OptionType> extends React.Component<\n OptionProps<OptionType> & Required<typeof defaultProps>\n> {\n static defaultProps = defaultProps;\n render() {\n const {\n label,\n isActive,\n isSelected,\n leftElement,\n rightElement,\n labelClassName,\n className\n } = this.props;\n const _class = cx(\n rowWrapper,\n {\n [activeRow]: !!isActive,\n [selectedRow]: !!isSelected\n },\n className\n );\n return (\n <Control\n {...this.props}\n checked={this.props.isSelected}\n type={this.props.multiSelect ? \"checkbox\" : \"radio\"}\n className={_class}\n >\n {() => {\n return (\n <>\n {leftElement && leftElement(this.props)}\n <div className={cx(labelWrap, labelClassName)}>{label}</div>\n {rightElement(this.props)}\n <Ink />\n </>\n );\n }}\n </Control>\n );\n }\n}\n\nexport default Option;\n","import { css } from \"emotion\";\nimport { constants, mixins, typography } from \"../../theme\";\nimport { getPlaceholderStyle } from \"../../theme/mixins\";\nimport { colors } from \"pebble-shared\";\n\nexport const searchWrapperStyle = css({\n minWidth: \"200px\",\n borderRadius: constants.borderRadius,\n padding: \"0 20px\",\n ...mixins.flexRow,\n alignItems: \"center\",\n height: 40,\n \"> i\": {\n marginRight: 10,\n fontSize: 12\n },\n \"&.__pebble__search__small\": {\n backgroundColor: colors.gray.lightest\n },\n \"&.__pebble__search__large\": {\n backgroundColor: colors.white.base,\n height: 76,\n padding: \"0 25px\",\n boxShadow: constants.boxShadow.base\n // input: typography.normal.regular\n },\n \"&.__pebble__search__table\": {\n border: `1px solid ${colors.gray.light}`,\n backgroundColor: colors.white.base,\n i: {\n color: colors.gray.dark\n }\n }\n});\n\nexport const searchStyle = css({\n borderRadius: constants.borderRadius,\n outline: \"none\",\n border: 0,\n height: \"inherit\",\n flexGrow: 1,\n ...mixins.textEllipsis,\n ...typography.s.regular,\n .../*#__PURE__*/ getPlaceholderStyle(colors.gray.base),\n backgroundColor: \"transparent\"\n});\n\nexport const clearContainer = css({\n display: \"table\",\n height: 16,\n width: 16,\n backgroundColor: colors.gray.light,\n fontSize: 6,\n borderRadius: 16,\n textAlign: \"center\",\n cursor: \"pointer\",\n pointerEvents: \"none\",\n transition: \"opacity 0.3s\",\n opacity: 0,\n \"&.__display\": {\n opacity: 1,\n pointerEvents: \"unset\"\n }\n});\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport { SearchProps } from \"./typings/Search\";\nimport {\n searchStyle,\n searchWrapperStyle,\n clearContainer\n} from \"./styles/Search.styles\";\nimport Loader from \"./Loader\";\nimport { colors } from \"pebble-shared\";\n\nclass Search extends React.PureComponent<SearchProps> {\n searchInputRef: React.RefObject<HTMLInputElement> = React.createRef();\n\n static defaultProps = {\n showSearchIcon: true,\n clearable: true\n };\n\n render() {\n const {\n type,\n inputProps,\n onChange,\n placeholder,\n showSearchIcon,\n className,\n clearable,\n value,\n loading\n } = this.props;\n\n const wrapperClassName = cx(searchWrapperStyle, {\n __pebble__search__small: type === \"small\",\n __pebble__search__large: type === \"large\",\n __pebble__search__table: type === \"table\"\n });\n\n return (\n <div className={cx(wrapperClassName, className)}>\n {type !== \"large\" && showSearchIcon && <i className=\"pi pi-search\" />}\n <input\n className={searchStyle}\n type=\"text\"\n aria-label={placeholder}\n placeholder={placeholder}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.value);\n }}\n ref={this.searchInputRef}\n value={value}\n {...inputProps}\n />\n {loading && <Loader scale={0.4} color={colors.violet.base} />}\n {clearable && (\n <div\n className={cx(clearContainer, {\n __display: !!value && !!value.length\n })}\n onClick={() => {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.value = \"\";\n }\n onChange(\"\");\n }}\n >\n <i\n className=\"pi pi-close\"\n style={{ display: \"table-cell\", verticalAlign: \"middle\" }}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default Search;\n","import { constants } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const optionWrapperMaxHeight = 316;\nexport const searchBoxHeight = 80;\nexport const initialPadding = 20;\nexport const onScrollPadding = 10;\n\nexport const optionsWrapper = css({\n backgroundColor: colors.white.base,\n borderRadius: constants.borderRadius,\n position: \"relative\",\n width: \"inherit\",\n zIndex: 9,\n maxHeight: optionWrapperMaxHeight,\n minWidth: 100,\n overflowY: \"auto\",\n padding: \"10px 1px\"\n});\n\nexport const searchBoxWrapper = css({\n padding: initialPadding,\n boxShadow: \"none\",\n transition: \"all 100ms linear\",\n zIndex: 10,\n willChange: \"padding\",\n position: \"absolute\",\n top: 0,\n background: \"white\",\n width: \"100%\",\n boxSizing: \"border-box\"\n});\n\nexport const searchBoxScrolledStyle = css({\n boxShadow: constants.boxShadow.base,\n padding: onScrollPadding\n});\n","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { OptionProps } from \"../typings/Option\";\nimport { OptionGroupProps, OptionGroupState } from \"../typings/OptionGroup\";\nimport scrollIntoView from \"scroll-into-view-if-needed\";\nimport { cx } from \"emotion\";\nimport Search from \"../Search\";\nimport {\n searchBoxScrolledStyle,\n searchBoxWrapper,\n optionsWrapper,\n searchBoxHeight\n} from \"../styles/OptionGroup.styles\";\nimport { rowWrapper, advancedActionsWrapper } from \"../styles/Options.styles\";\n\nclass OptionGroup<OptionType> extends React.PureComponent<\n OptionGroupProps<OptionType>,\n OptionGroupState\n> {\n optionRef: React.RefObject<HTMLDivElement> = React.createRef();\n optionsRefsSet = new Map<number, React.RefObject<React.ReactInstance>>();\n observer?: IntersectionObserver;\n\n state: Readonly<OptionGroupState> = {\n highlighted: -1,\n isScrolled: false\n };\n\n private handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { handleChange, isSelected } = this.props;\n const children = React.Children.toArray(this.props.children);\n const { highlighted } = this.state;\n const { which } = e;\n\n if (which === 13 && children && children[highlighted]) {\n // Enter key\n // @ts-ignore\n const { value } =\n // @ts-ignore\n children && children[highlighted] && children[highlighted].props;\n\n handleChange(\n {\n value,\n checked: !isSelected(value)\n },\n e\n );\n }\n\n this.setState(\n () => {\n let _highlighted = highlighted;\n if (which === 40) {\n _highlighted = Math.min(\n _highlighted + 1,\n React.Children.count(children) - 1\n );\n }\n if (which === 38) {\n _highlighted = Math.max(_highlighted - 1, 0);\n }\n\n return { highlighted: _highlighted };\n },\n () => {\n const currentRef = this.optionsRefsSet.get(highlighted);\n if (\n this.optionRef.current &&\n (which === 40 || which === 38) &&\n currentRef &&\n currentRef.current\n ) {\n const element = ReactDOM.findDOMNode(currentRef.current) as Element;\n if (element) {\n scrollIntoView(element, {\n behavior: \"smooth\",\n boundary: this.optionRef.current\n });\n }\n }\n }\n );\n };\n\n componentDidMount() {\n this.observer = new IntersectionObserver(\n entries => {\n this.setState({\n isScrolled: entries[0].intersectionRatio < 0.9\n });\n },\n {\n root: this.optionRef.current,\n threshold: 0.9\n }\n );\n\n if (\n this.optionRef.current &&\n this.optionRef.current.childNodes &&\n this.optionRef.current.childNodes.length\n ) {\n this.observer.observe(this.optionRef.current.childNodes[0] as Element);\n }\n }\n\n componentWillUnmount() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n render() {\n const {\n searchBox,\n advancedOptions,\n advancedOptionsProps,\n children,\n multiSelect,\n className,\n isSelected,\n handleChange,\n searchBoxProps\n } = this.props;\n const { isScrolled, highlighted } = this.state;\n\n const _children = React.Children.map(children, (_option, i) => {\n // `_option as React.ReactElement<OptionProps>` is a hack\n // Because React does not allow us to specify what sort of elements\n // you can allow as children and leaves it on you to figure out\n // all various types of children provided.\n const option = _option as React.ReactElement<OptionProps<OptionType>>;\n let ref = this.optionsRefsSet.get(i);\n if (!ref) {\n ref = React.createRef<HTMLDivElement>();\n this.optionsRefsSet.set(i, ref);\n }\n return React.cloneElement(option, {\n onChange: handleChange,\n isActive: highlighted === i,\n isSelected: isSelected(option.props.value),\n multiSelect,\n // @ts-ignore\n ref\n });\n });\n\n const searchBoxClassName = cx(searchBoxWrapper, {\n [searchBoxScrolledStyle]: isScrolled\n });\n\n const _class = cx(\n rowWrapper,\n advancedActionsWrapper,\n advancedOptionsProps && advancedOptionsProps.className\n );\n\n return (\n <React.Fragment>\n {searchBox && searchBoxProps && (\n <div className={searchBoxClassName}>\n <Search\n type=\"small\"\n {...searchBoxProps}\n inputProps={{\n ...(searchBoxProps && searchBoxProps.inputProps),\n onKeyDown: this.handleKeyPress,\n autoFocus: true\n }}\n />\n </div>\n )}\n {!!React.Children.count(children) && (\n <div\n ref={this.optionRef}\n style={{\n paddingTop: searchBox ? searchBoxHeight : undefined\n }}\n className={cx(optionsWrapper, className)}\n role={multiSelect ? \"group\" : \"radiogroup\"}\n data-test-id=\"optiongroup\"\n aria-label={searchBoxProps && searchBoxProps.placeholder}\n >\n {advancedOptions && advancedOptionsProps && (\n <div className={_class}>\n <div onClick={advancedOptionsProps.selectVisible}>\n Select Visible\n </div>\n <div onClick={advancedOptionsProps.clearVisible}>\n Clear Visible\n </div>\n </div>\n )}\n {_children}\n </div>\n )}\n </React.Fragment>\n );\n }\n}\n\nexport default OptionGroup;\n","import * as mixins from \"../../theme/mixins\";\nimport { css } from \"emotion\";\nimport {\n optionWrapperMaxHeight,\n searchBoxHeight,\n initialPadding,\n onScrollPadding\n} from \"./OptionGroup.styles\";\nimport { smallButtonHeight } from \"./Button.styles\";\nimport { colors } from \"pebble-shared\";\nexport const optionGroupCheckBoxButtonWrapPadding = 20;\nexport const optionGroupCheckBoxButtonWrapPaddingTop = 10;\n\nexport const optionGroupCheckBoxWrap = css({\n maxHeight:\n optionWrapperMaxHeight +\n searchBoxHeight +\n 2 * (initialPadding - onScrollPadding) +\n optionGroupCheckBoxButtonWrapPadding +\n optionGroupCheckBoxButtonWrapPaddingTop +\n smallButtonHeight,\n position: \"relative\"\n});\n\nexport const optionGroupCheckBoxButtonWrap = css({\n ...mixins.flexSpaceBetween,\n gap: 60,\n padding: optionGroupCheckBoxButtonWrapPadding,\n paddingTop: optionGroupCheckBoxButtonWrapPaddingTop,\n backgroundColor: colors.white.base\n});\n","import { cx } from \"emotion\";\nimport * as React from \"react\";\nimport { getSelectedCheckboxes } from \"./utils/getSelectedCheckboxes\";\nimport Button from \"./Button\";\nimport OptionGroup from \"./shared/OptionGroup\";\nimport { OptionGroupCheckBoxProps } from \"./typings/OptionGroupCheckBox\";\nimport * as styles from \"../components/styles/OptionGroupCheckBox.styles\";\nimport { OptionProps } from \"./typings/Option\";\n\nexport default class OptionGroupCheckBox<\n OptionType\n> extends React.PureComponent<OptionGroupCheckBoxProps<OptionType>> {\n isSelected = (value: OptionType) => {\n const { selected } = this.props;\n return !!selected && selected.includes(value);\n };\n handleChange: OptionGroup<OptionType>[\"props\"][\"handleChange\"] = (\n { value },\n event\n ) => {\n this.props.onChange(\n getSelectedCheckboxes<OptionType>(value, this.props.selected),\n {\n props: this.props,\n event\n }\n );\n };\n selectVisible = () => {\n const { children } = this.props;\n const _values = (\n React.Children.map(\n children,\n child => child as React.ReactElement<OptionProps<OptionType>>\n ) || []\n )\n .filter(_child => _child && _child.props && _child.props.value)\n .map(_child => _child && _child.props && _child.props.value);\n this.props.onChange(_values, { props: this.props });\n };\n clearVisible = () => {\n this.props.onChange([], { props: this.props, event });\n };\n onApply = () => {\n const { onApply, selected } = this.props;\n if (onApply) onApply(selected || [], this.props);\n };\n render() {\n const {\n wrapClassName,\n onApply,\n onClear,\n isSelected,\n onChange,\n ...rest\n } = this.props;\n const advancedOptionsProps = {\n selectVisible: this.selectVisible,\n clearVisible: this.clearVisible,\n ...this.props.advancedOptionsProps\n };\n return (\n <div className={cx(styles.optionGroupCheckBoxWrap, wrapClassName)}>\n <OptionGroup<OptionType>\n {...rest}\n advancedOptionsProps={advancedOptionsProps}\n isSelected={isSelected || this.isSelected}\n handleChange={this.handleChange}\n multiSelect\n />\n\n {(onApply || onClear) && (\n <div className={styles.optionGroupCheckBoxButtonWrap}>\n {onClear && (\n <Button type=\"secondary\" onClick={onClear}>\n Clear\n </Button>\n )}\n {onApply && <Button onClick={this.onApply}>Apply</Button>}\n </div>\n )}\n </div>\n );\n }\n}\n","import * as React from \"react\";\nimport OptionGroup from \"./shared/OptionGroup\";\nimport { OptionGroupRadio as OptionGroupRadioProps } from \"./typings/OptionGroupRadio\";\n\nexport default class OptionGroupRadio<OptionType> extends React.PureComponent<\n OptionGroupRadioProps<OptionType>\n> {\n isSelected = (value: OptionType) => {\n return this.props.selected === value;\n };\n handleChange: OptionGroup<OptionType>[\"props\"][\"handleChange\"] = (\n { value, checked },\n event\n ) => {\n const { onChange } = this.props;\n onChange(checked ? value : undefined, {\n props: this.props,\n event\n });\n };\n render() {\n const { selected, onChange, isSelected, ...rest } = this.props;\n return (\n <OptionGroup<OptionType>\n {...rest}\n isSelected={isSelected || this.isSelected}\n handleChange={this.handleChange}\n />\n );\n }\n}\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport { inputMarginBottom } from \"./Input.styles\";\n\nexport const selectWrapper = css({\n marginBottom: 20\n});\n\nexport const relativePosition = css({\n position: \"relative\"\n});\n\nexport const selectInputWrapper = css({\n pointerEvents: \"none\",\n marginBottom: 0\n});\n\nexport const selectInput = css({\n color: colors.gray.darker,\n paddingRight: 15\n});\n\nexport const dropDownClass = css({\n marginTop: -inputMarginBottom\n});\n\nexport const fullWidth = css({\n width: \"100%\"\n});\n\nexport const inputWrapper = css({\n cursor: \"pointer\",\n position: \"relative\"\n});\n\nexport const disabledSelect = css({\n cursor: \"not-allowed\"\n});\n\nexport const chevronStyle = css({\n position: \"absolute\",\n top: 0,\n bottom: 0,\n margin: \"auto\",\n height: \"10px\",\n right: 7,\n color: colors.gray.base,\n fontSize: 10,\n \"&.__pebble__select__open\": {\n transform: \"rotate(180deg)\"\n }\n});\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport { SelectProps } from \"./typings/Select\";\nimport {\n chevronStyle,\n dropDownClass,\n inputWrapper,\n selectInput,\n selectInputWrapper,\n selectWrapper,\n fullWidth,\n relativePosition,\n disabledSelect\n} from \"./styles/Select.styles\";\nimport DropDown from \"./DropDown\";\nimport Input from \"./Input\";\nimport OptionGroupCheckBox from \"./OptionGroupCheckBox\";\nimport OptionGroupRadio from \"./OptionGroupRadio\";\n\nfunction noop() {}\n\nfunction Select<OptionType>(props: SelectProps<OptionType>) {\n const {\n className,\n placeholder,\n required,\n errorMessage,\n value,\n dropdownClassName,\n arrowClassName,\n inputProps,\n fullWidthDropdown,\n onDropdownToggle = noop,\n disabled,\n isSelected,\n placement,\n modifiers\n } = props;\n\n return (\n <div\n className={cx(selectWrapper, className, {\n [relativePosition]: !!fullWidthDropdown\n })}\n >\n <DropDown\n dropDownClassName={cx(dropDownClass, dropdownClassName, {\n [fullWidth]: !!fullWidthDropdown\n })}\n onOutsideClick={isOpen => onDropdownToggle(isOpen)}\n labelComponent={({ toggleDropdown, isOpen }) => {\n const chevron = cx(\n chevronStyle,\n \"pi pi-arrow-drop-down\",\n {\n __pebble__select__open: isOpen\n },\n arrowClassName\n );\n return (\n <div\n className={cx(inputWrapper, disabled && disabledSelect)}\n onClick={\n disabled\n ? undefined\n : () => {\n toggleDropdown();\n onDropdownToggle(isOpen);\n }\n }\n >\n <Input\n className={selectInputWrapper}\n inputClassName={selectInput}\n placeholder={placeholder}\n value={value || \"\"}\n onChange={noop}\n required={required}\n message={isOpen ? \" \" : \"\"}\n errorMessage={errorMessage}\n readOnly\n disabled={disabled}\n {...inputProps}\n />\n <i className={chevron} />\n </div>\n );\n }}\n placement={placement}\n modifiers={modifiers}\n >\n {({ toggle, isOpen }) => {\n const { children, onClear, searchBox, searchBoxProps } = props;\n const commonProps = {\n isSelected,\n onClear:\n onClear &&\n (() => {\n onClear();\n onDropdownToggle(isOpen);\n toggle();\n }),\n searchBox,\n searchBoxProps\n };\n\n // This would have been the ideal way to write this but typescript is crying.\n // const OptionGroup = props.multiSelect\n // ? OptionGroupCheckBox\n // : OptionGroupRadio;\n // return (\n // <OptionGroup\n // selected={props.selected}\n // onChange={(_value, extras) => {\n // if (_value) {\n // props.onChange(_value, extras);\n // }\n // if (!props.multiSelect) {\n // onDropdownToggle(isOpen);\n // toggle();\n // }\n // }}\n // onApply={\n // props.multiSelect &&\n // props.onApply &&\n // (_value => {\n // if (props.onApply) {\n // props.onApply(_value, props);\n // }\n // onDropdownToggle(isOpen);\n // toggle();\n // })\n // }\n // {...commonProps}\n // >\n // {children}\n // </OptionGroup>\n // );\n\n if (props.multiSelect) {\n return (\n <OptionGroupCheckBox<OptionType>\n selected={props.selected}\n onChange={(_value, extras) => {\n props.onChange(_value, extras);\n }}\n onApply={\n props.onApply &&\n (_value => {\n if (props.onApply) props.onApply(_value, props);\n onDropdownToggle(isOpen);\n toggle();\n })\n }\n {...commonProps}\n >\n {children}\n </OptionGroupCheckBox>\n );\n } else {\n return (\n <OptionGroupRadio\n selected={props.selected}\n onChange={(_value, extras) => {\n if (_value !== undefined) props.onChange(_value, extras);\n onDropdownToggle(isOpen);\n toggle();\n }}\n {...commonProps}\n >\n {children}\n </OptionGroupRadio>\n );\n }\n }}\n </DropDown>\n </div>\n );\n}\n\nexport default Select;\n","import { css } from \"emotion\";\n\nexport const wrapper = css({\n display: \"flex\"\n});\n\nexport const selectStyle = css({\n width: \"80px\",\n marginBottom: 0\n});\n\nexport const combinedLabelStyle = css({\n zIndex: 1\n});\n","import * as React from \"react\";\nimport Select from \"./Select\";\nimport Input from \"./Input\";\nimport { cx } from \"emotion\";\nimport { PhoneNumberInputProps } from \"./typings/PhoneNumberInput\";\nimport {\n wrapper,\n selectStyle,\n combinedLabelStyle\n} from \"./styles/PhoneNumberInput.styles\";\nimport { labelStyle } from \"./styles/Input.styles\";\nimport { colors } from \"pebble-shared\";\n\nexport default class PhoneNumberInput<\n OptionType = string\n> extends React.Component<PhoneNumberInputProps<OptionType>> {\n onCountrySelect = (countryCode: OptionType) => {\n this.props.onChange({\n countryCode,\n phone: this.props.phone\n });\n };\n\n onNumberChange = (value: string) => {\n const _value = value.replace(/\\D/g, \"\");\n if (_value === this.props.phone) {\n return;\n }\n this.props.onChange({\n countryCode: this.props.countryCode,\n phone: _value\n });\n };\n\n render() {\n const {\n phone,\n countryCode,\n className,\n selectProps,\n inputProps,\n required,\n placeholder\n } = this.props;\n return (\n <div className={cx(wrapper, className)}>\n <label\n className={cx(\n labelStyle,\n \"_pebble_input_label_focused\",\n combinedLabelStyle\n )}\n >\n {placeholder || \"Phone No.\"}\n {required && <span style={{ color: colors.red.base }}> *</span>}\n </label>\n <Select<OptionType>\n placeholder=\"\"\n onChange={this.onCountrySelect}\n value={countryCode + \"\"}\n selected={countryCode}\n {...selectProps}\n className={cx(selectStyle, selectProps && selectProps.className)}\n >\n {this.props.children}\n </Select>\n <Input\n onChange={this.onNumberChange}\n placeholder=\"\"\n value={phone}\n {...inputProps}\n />\n </div>\n );\n }\n}\n","import { css } from \"emotion\";\nimport { constants } from \"../../theme\";\n\nexport const popperStyle = css({\n margin: 14,\n boxShadow: constants.boxShadow.xElevated,\n borderRadius: constants.borderRadius\n});\n\nexport const arrowStyle = css({\n position: \"absolute\",\n textShadow: \"1px 0 20px rgba(0,0,0,0.1)\",\n \"&[data-placement^='top']\": {\n transform: \"rotate(90deg)\",\n bottom: -11\n },\n \"&[data-placement^='bottom']\": {\n transform: \"rotate(-90deg)\",\n top: -11\n },\n \"&[data-placement^='right']\": {\n transform: \"rotate(180deg)\",\n left: -11\n },\n \"&[data-placement^='left']\": {\n right: -11\n }\n});\n","import * as React from \"react\";\nimport { PopperProps, PopperState } from \"./typings/Popper\";\nimport { Manager, Reference, Popper } from \"react-popper\";\nimport { arrowStyle, popperStyle } from \"./styles/Popper.styles\";\nimport { colors } from \"pebble-shared\";\nimport { cx } from \"emotion\";\nimport OutsideClick from \"./OutsideClick\";\nimport MountTransition from \"./shared/MountTransition\";\n\nexport default class PebblePopper extends React.PureComponent<\n PopperProps,\n PopperState\n> {\n static defaultProps: Partial<PopperProps> = {\n placement: \"bottom\",\n closeOnOutsideClick: true\n };\n\n state: PopperState = {\n isOpen: !!this.props.isOpen\n };\n\n private toggle = () => {\n this.setState({\n isOpen: !this.state.isOpen\n });\n };\n\n render() {\n const {\n label,\n popperBackgroundColor = colors.white.base,\n children,\n controlled,\n isOpen,\n popperClassName,\n onOutsideClick,\n ...props\n } = this.props;\n\n const _isPopperOpen = controlled ? !!isOpen : this.state.isOpen;\n\n return (\n <OutsideClick\n onOutsideClick={() => {\n this.setState({\n isOpen: false\n });\n if (onOutsideClick) {\n onOutsideClick();\n }\n }}\n disabled={!_isPopperOpen}\n >\n <Manager>\n <Reference>\n {({ ref }) => (\n <div style={{ display: \"inline-block\" }} ref={ref}>\n {typeof label === \"function\"\n ? label({ toggle: this.toggle, isOpen: this.state.isOpen })\n : label}\n </div>\n )}\n </Reference>\n\n <MountTransition visible={_isPopperOpen}>\n {transitionStyles => (\n <Popper {...props} positionFixed>\n {({ ref, style, placement, arrowProps }) => {\n const wrapperStyle = {\n ...style,\n ...transitionStyles,\n backgroundColor: popperBackgroundColor,\n transform: `${style.transform || \"\"} ${\n transitionStyles.transform || \"\"\n }`,\n transformOrigin: `${arrowProps.style.left || 0}px ${\n arrowProps.style.top || 0\n }px`\n };\n\n return (\n <div\n className={cx(popperStyle, popperClassName)}\n ref={ref}\n style={wrapperStyle}\n data-placement={placement}\n >\n {children({\n toggle: this.toggle,\n isOpen: this.state.isOpen\n })}\n <div\n className={arrowStyle}\n ref={arrowProps.ref}\n style={{\n ...arrowProps.style,\n color: popperBackgroundColor\n }}\n data-placement={placement}\n >\n ▶\n </div>\n </div>\n );\n }}\n </Popper>\n )}\n </MountTransition>\n </Manager>\n </OutsideClick>\n );\n }\n}\n","import { css } from \"emotion\";\nimport { mixins, constants } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nconst modalPadding = 30;\n\nexport const modalContainer = css({\n background: \"white\",\n width: \"360px\",\n alignSelf: \"center\",\n borderRadius: constants.borderRadius,\n padding: modalPadding,\n position: \"relative\"\n});\n\nexport const flexCenter = css({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\"\n});\n\nexport const buttonsContainer = css({\n ...mixins.flexSpaceBetween,\n marginTop: \"40px\"\n});\n\nexport const iconCloseClassName = css({\n cursor: \"pointer\",\n position: \"absolute\",\n right: modalPadding,\n top: modalPadding,\n fontSize: \"14px\",\n color: colors.gray.base,\n \"&:hover\": {\n color: colors.gray.darker\n }\n});\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport Modal from \"./Modal\";\nimport Button from \"./Button\";\nimport {\n modalContainer,\n buttonsContainer,\n iconCloseClassName,\n flexCenter\n} from \"./styles/PopUp.styles\";\nimport { PopUpProps } from \"./typings/PopUp\";\n\nconst PopUp: React.FunctionComponent<PopUpProps> = props => {\n const {\n onClose,\n onApprove,\n onReject,\n visible,\n approveButtonText = \"Yes\",\n rejectButtonText = \"No\",\n children,\n approveButtonProps,\n rejectButtonProps\n } = props;\n return (\n <Modal visible={visible} modalClassName={flexCenter}>\n <div className={modalContainer}>\n {onClose && (\n <i\n className={cx(\"pi\", \"pi-close\", iconCloseClassName)}\n onClick={onClose}\n />\n )}\n {children}\n {(onReject || onApprove) && (\n <div className={buttonsContainer}>\n {onReject && (\n <Button\n size=\"large\"\n type=\"secondary\"\n onClick={onReject}\n {...rejectButtonProps}\n >\n {rejectButtonText}\n </Button>\n )}\n {onApprove && (\n <Button\n size=\"large\"\n type=\"primary\"\n onClick={onApprove}\n {...approveButtonProps}\n >\n {approveButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </Modal>\n );\n};\n\nexport default PopUp;\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport { typography } from \"../../theme\";\n\nexport const selectedTabStyle = css({\n borderBottom: `2px solid ${colors.violet.base}`,\n color: colors.violet.base\n});\n\nexport const tabStyle = css({\n padding: \"10px 20px 20px\",\n cursor: \"pointer\",\n ...typography.s.bold\n});\n\nexport const tabsWrap = css({\n display: \"flex\",\n justifyContent: \"space-around\",\n overflow: \"auto\",\n borderBottom: `1px solid ${colors.gray.lighter}`,\n background: colors.white.base\n});\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport { TabsState, TabsProps, TabSectionProps } from \"./typings/Tabs\";\nimport { tabStyle, tabsWrap, selectedTabStyle } from \"./styles/Tabs.styles\";\n\nconst TabSelectedContext = /*@__PURE__*/ React.createContext<string | null>(\n null\n);\n\nexport class Tabs extends React.PureComponent<TabsProps, TabsState> {\n state: Readonly<TabsState> = {\n selectedTab:\n this.props.initialSelectedTab ||\n (this.props.tabs.length && this.props.tabs[0]) ||\n \"\"\n };\n\n static getDerivedStateFromProps(props: TabsProps): Partial<TabsState> | null {\n if (!props.selectedTab) {\n return null;\n }\n return {\n selectedTab: props.selectedTab\n };\n }\n\n render() {\n const _className = cx(tabStyle, this.props.tabClassName);\n\n const { labels } = this.props;\n\n return (\n <TabSelectedContext.Provider value={this.state.selectedTab}>\n <div className={cx(tabsWrap, this.props.wrapClassName)}>\n {this.props.tabs.map((tab, i) => {\n const isSelected = this.state.selectedTab === tab;\n return (\n <span\n key={`${tab}-${i}`}\n data-test-id={`${tab\n .replace(/\\d/g, \"\")\n .replace(\"(\", \"\")\n .replace(\")\", \"\")\n .trim()}`}\n className={cx(\n _className,\n isSelected && selectedTabStyle,\n isSelected && this.props.selectedTabClassName\n )}\n onClick={() => {\n this.setState({\n selectedTab: tab\n });\n if (this.props.onTabChange) {\n this.props.onTabChange(tab);\n }\n }}\n >\n {labels && labels[tab] ? labels[tab] : tab}\n </span>\n );\n })}\n </div>\n {this.props.children}\n </TabSelectedContext.Provider>\n );\n }\n}\n\n// tslint:disable-next-line:max-classes-per-file\nexport class TabSection extends React.PureComponent<TabSectionProps, {}> {\n static context = TabSelectedContext;\n render() {\n const { section, children } = this.props;\n return (\n <TabSelectedContext.Consumer>\n {selectedTab => <>{section === selectedTab && children}</>}\n </TabSelectedContext.Consumer>\n );\n }\n}\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const tabsStyle = css({\n width: \"100%\",\n textAlign: \"center\",\n padding: \"20px\",\n color: colors.gray.dark,\n fontSize: \"16px\"\n});\n\nexport const dateBtnsWrap = css({\n display: \"flex\",\n flexWrap: \"wrap\",\n width: \"416px\",\n padding: \"20px 40px\",\n justifyContent: \"space-between\"\n});\n\nexport const unSelectedDateButton = css({\n marginBottom: \"20px\",\n border: `1px solid ${colors.gray.light}`,\n background: colors.white.base,\n color: colors.gray.darker,\n width: \"158px\",\n \"&:not([disabled]):hover\": {\n border: \"none\",\n background: colors.gray.light,\n color: colors.gray.darker\n }\n});\n\nexport const selectedDateButton = css({\n border: \"none\",\n background: colors.violet.lightest,\n color: colors.violet.dark,\n \"&:not([disabled]):hover\": {\n border: \"none\",\n background: colors.violet.lightest,\n color: colors.violet.dark\n }\n});\n","import * as React from \"react\";\nimport Calendar from \"./Calendar\";\nimport { cx } from \"emotion\";\nimport {\n PresetCalendarProps,\n PresetCalendarState\n} from \"./typings/PresetCalendar\";\nimport { Tabs, TabSection } from \"./Tabs\";\nimport Button from \"./Button\";\nimport {\n tabsStyle,\n selectedDateButton,\n unSelectedDateButton,\n dateBtnsWrap\n} from \"./styles/PresetCalendar.styles\";\n\nconst DATE_TABS = [\"Presets\", \"Custom\"];\n\nclass PresetCalendar extends React.PureComponent<\n PresetCalendarProps,\n PresetCalendarState\n> {\n state = {\n startTime: this.props.defaultValue && this.props.defaultValue[0],\n endTime: this.props.defaultValue && this.props.defaultValue[1]\n };\n\n render() {\n const { startTime, endTime } = this.state;\n const { defaultValue } = this.props;\n\n return (\n <Tabs\n tabs={DATE_TABS}\n initialSelectedTab=\"Presets\"\n tabClassName={tabsStyle}\n >\n <TabSection section={DATE_TABS[0]}>\n <div className={dateBtnsWrap}>\n {this.props.presetDateOptions.map((btn, index) => (\n <Button\n onClick={() => {\n this.setState({\n startTime: btn.dateRange[0],\n endTime: btn.dateRange[1]\n });\n if (this.props.onApply) {\n this.props.onApply(btn.dateRange as [Date, Date]);\n }\n }}\n type=\"primary\"\n size=\"large\"\n className={cx({\n [unSelectedDateButton]: true,\n [selectedDateButton]:\n btn.dateRange[0] === this.state.startTime &&\n btn.dateRange[1] === this.state.endTime\n })}\n key={`${btn.label}-${index}`}\n >\n {btn.label}\n </Button>\n ))}\n </div>\n </TabSection>\n <TabSection section={DATE_TABS[1]}>\n <Calendar\n hideShadow\n range\n onChange={(value: Date[] | Date | undefined) => {\n if (value && Array.isArray(value)) {\n this.setState({\n startTime: value[0],\n endTime: value[1]\n });\n this.props.onChange(value as [Date, Date]);\n }\n }}\n selected={\n (startTime && endTime && [startTime, endTime]) || undefined\n }\n onApply={(value: Date[] | Date | undefined) => {\n if (value && Array.isArray(value)) {\n this.setState({\n startTime: value[0],\n endTime: value[1]\n });\n this.props.onApply(value as [Date, Date]);\n }\n }}\n onClear={() => {\n this.setState({\n startTime: defaultValue && defaultValue[0],\n endTime: defaultValue && defaultValue[1]\n });\n if (this.props.onClear) {\n this.props.onClear();\n }\n }}\n />\n </TabSection>\n </Tabs>\n );\n }\n}\n\nexport default PresetCalendar;\n","import * as React from \"react\";\nimport { RadioProps } from \"./typings/Radio\";\nimport { RadioGroupProps } from \"./typings/RadioGroup\";\n\nexport default class RadioGroup<OptionType> extends React.PureComponent<\n RadioGroupProps<OptionType>\n> {\n private handleChange = (\n { value, checked }: { value: OptionType; checked: boolean },\n event: React.MouseEvent\n ) => {\n const { toggle, selected, onChange } = this.props;\n if (!toggle && value === selected) return;\n onChange(checked ? value : undefined, event);\n };\n\n render() {\n const { children, selected, className, name, disabled } = this.props;\n\n const _children = React.Children.map(children, _radio => {\n // `_radio as React.ReactElement<RadioProps>` is a hack\n // Because React does not allow us to specify what sort of elements\n // you can allow as children and leaves it on you to figure out\n // all various types of children provided.\n const radio = _radio as React.ReactElement<RadioProps<OptionType>>;\n return React.cloneElement(radio, {\n onChange: this.handleChange,\n checked: selected === radio.props.value,\n disabled\n });\n });\n\n return (\n <div role=\"radiogroup\" aria-label={name} className={className}>\n {_children}\n </div>\n );\n }\n}\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport { mixins } from \"../../theme\";\n\nexport const wrapStyle = css({\n ...mixins.flexRow,\n cursor: \"pointer\"\n});\n\nexport const disabledStyle = css({\n cursor: \"not-allowed\"\n});\n\nexport const unSelectedStar = css({\n marginLeft: \"2px\",\n color: colors.gray.border,\n fontSize: \"20px\"\n});\n\nexport const selectedStar = css({\n color: colors.yellow.base\n});\n","import { cx } from \"emotion\";\nimport * as React from \"react\";\nimport {\n disabledStyle,\n selectedStar,\n unSelectedStar,\n wrapStyle\n} from \"./styles/Rating.styles\";\nimport { RatingProps, RatingState } from \"./typings/Rating\";\n\nfunction generateStars(maxRating: number, selectedValue: number) {\n return Array.from({ length: maxRating }, (_, i) => {\n return { active: i + 1 <= selectedValue };\n });\n}\n\nclass Rating extends React.PureComponent<RatingProps, RatingState> {\n constructor(props: RatingProps) {\n super(props);\n this.state = {\n stars: generateStars(props.maxRating, props.value)\n };\n }\n\n componentDidUpdate(prevProps: RatingProps) {\n const { maxRating, value } = this.props;\n if (prevProps.maxRating !== maxRating) {\n this.setState({\n stars: generateStars(maxRating, value)\n });\n }\n }\n\n setRating = (rating: number) => {\n const { maxRating, disabled } = this.props;\n if (disabled) {\n return;\n }\n this.setState({\n stars: generateStars(maxRating, rating)\n });\n };\n\n render() {\n const { name, value, onChange, disabled, className } = this.props;\n const { stars } = this.state;\n\n const _className = cx(wrapStyle, className, disabled && disabledStyle);\n\n return (\n <div className={_className}>\n {stars.map((star, starIndex) => {\n const rating = starIndex + 1;\n return (\n <span\n key={`${name}-${rating}`}\n onMouseEnter={() => this.setRating(rating)}\n onMouseLeave={() => this.setRating(value)}\n onClick={() => {\n if (disabled) {\n return;\n }\n this.setRating(rating);\n onChange(rating);\n }}\n >\n <i\n className={cx(\n \"pi pi-grade\",\n unSelectedStar,\n star.active && selectedStar\n )}\n />\n </span>\n );\n })}\n </div>\n );\n }\n}\n\nexport default Rating;\n","import { mixins, typography } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const inputReadOnlyStyle = css({\n color: colors.gray.dark\n});\n\nexport const inputDisabledStyle = css({\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n color: colors.gray.base\n});\n\nexport const messageStyle = css({\n ...typography.s.regular,\n marginTop: 10,\n lineHeight: \"10px\",\n textAlign: \"left\"\n});\n\nexport const infoTextStyle = css({\n ...typography.s.light,\n marginRight: \"15px\",\n lineHeight: \"12px\"\n});\n\nexport const placeholderStyle = css({\n position: \"absolute\",\n left: \"15px\",\n color: colors.gray.base,\n cursor: \"text\",\n transition: \"transform 100ms ease\",\n transform: \"translate(0, 0px)\",\n pointerEvents: \"none\",\n \"&._pebble_secondary_input_label_focused\": {\n fontSize: \"12px\",\n transform: \"translate(0, -10px)\"\n }\n});\n\nexport const inputStyle = css({\n border: 0,\n outline: 0,\n borderRadius: \"3px\",\n padding: \"15px 15px 0px\",\n width: \"100%\",\n fontSize: \"14px\",\n lineHeight: \"12px\",\n ...mixins.textEllipsis,\n height: \"48px\"\n});\n\nexport const inputWrapperStyle = css({\n position: \"relative\",\n borderRadius: \"3px\",\n fontSize: \"14px\",\n lineHeight: \"12px\",\n background: colors.white.base,\n boxSizing: \"border-box\",\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\"\n});\n\nexport const wrapperStyle = css({ width: \"100%\", height: \"70px\" });\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport Loader from \"./Loader\";\nimport {\n inputDisabledStyle,\n inputReadOnlyStyle,\n infoTextStyle,\n inputStyle,\n inputWrapperStyle,\n wrapperStyle,\n messageStyle,\n placeholderStyle\n} from \"./styles/SecondaryInput.styles\";\nimport {\n SecondaryInputProps,\n SecondaryInputState\n} from \"./typings/SecondaryInput\";\n\nfunction getColor(\n error: string | undefined,\n success: string | undefined,\n isFocused?: boolean,\n isBorder?: boolean\n) {\n let color = isBorder ? colors.gray.light : colors.gray.dark;\n if (error) {\n color = colors.red.base;\n } else if (success) {\n color = colors.emerald.base;\n } else if (isFocused) {\n color = colors.violet.base;\n }\n\n return color;\n}\n\nexport default class SecondaryInput extends React.PureComponent<\n SecondaryInputProps,\n SecondaryInputState\n> {\n state: Readonly<SecondaryInputState> = {\n isFocused: false\n };\n\n private addFocus = () => {\n this.setState({\n isFocused: true\n });\n };\n\n private removeFocus = () => {\n this.setState({\n isFocused: false\n });\n };\n\n private handleChange = (\n e:\n | React.ChangeEvent<HTMLInputElement>\n | React.ChangeEvent<HTMLTextAreaElement>\n ) => {\n this.props.onChange(e.target.value || \"\");\n };\n\n render() {\n const {\n placeholder,\n inputClassName,\n required,\n infoText,\n value,\n disabled,\n errorMessage,\n successMessage,\n message,\n readOnly,\n loading,\n className\n } = this.props;\n const { isFocused } = this.state;\n\n const _message = errorMessage || successMessage || message;\n\n const _inputProps = {\n \"aria-label\": placeholder ? placeholder : undefined,\n disabled,\n readOnly,\n value: value || \"\",\n className: inputStyle,\n onChange: this.handleChange\n };\n\n const inputWrapperClassName = cx(\n inputWrapperStyle,\n {\n [inputDisabledStyle]: !!disabled,\n [inputReadOnlyStyle]: !!readOnly\n },\n inputClassName\n );\n\n const placeholderClassName = cx(placeholderStyle, {\n _pebble_secondary_input_label_focused: isFocused || !!value\n });\n\n return (\n <div className={cx(wrapperStyle, className)}>\n <div\n className={inputWrapperClassName}\n style={{\n border: `1px solid ${getColor(\n errorMessage,\n successMessage,\n isFocused,\n true\n )}`\n }}\n onFocus={this.addFocus}\n onBlur={this.removeFocus}\n >\n <input {..._inputProps} {...this.props.inputProps} />\n <label className={placeholderClassName}>\n {placeholder}\n {required && (\n <span style={{ color: colors.red.base }}> *</span>\n )}\n </label>\n {infoText && !loading && (value || isFocused) && (\n <label className={infoTextStyle}>{infoText}</label>\n )}\n {loading && <Loader color={colors.violet.base} scale={0.4} />}\n </div>\n {_message && (\n <div\n className={messageStyle}\n style={{ color: getColor(errorMessage, successMessage) }}\n >\n {_message}\n </div>\n )}\n </div>\n );\n }\n}\n","import { css } from \"emotion\";\nimport { constants } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nexport const sidebarWrapperStyle = css({\n backgroundColor: \"rgba(16,23,33,0.3)\",\n position: \"fixed\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 99\n});\n\nexport const closeStyle = css({\n backgroundColor: colors.white.base,\n borderRadius: constants.borderRadius,\n height: 40,\n width: 40,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n marginLeft: -60,\n marginTop: 20,\n position: \"absolute\",\n i: {\n fontSize: 14,\n color: colors.gray.darker\n },\n \"@media (max-width: 800px)\": {\n left: 80,\n marginTop: -45,\n borderRadius: 0,\n display: \"flex\",\n justifyContent: \"flex-end\",\n padding: \"0 20px\",\n i: {\n float: \"right\",\n color: colors.gray.dark,\n fontSize: 14\n }\n }\n});\n\nexport const sidebarStyle = css({\n backgroundColor: colors.white.base,\n position: \"fixed\",\n top: 0,\n bottom: 0,\n right: 0,\n willChange: \"transform\",\n zIndex: 99,\n \"@media (max-width: 800px)\": {\n width: \"100%\",\n paddingTop: 50\n },\n webkitOverflowScrolling: \"touch\"\n});\n","import * as React from \"react\";\nimport {\n closeStyle,\n sidebarStyle,\n sidebarWrapperStyle\n} from \"./styles/Sidebar.styles\";\nimport { SidebarProps } from \"./typings/Sidebar\";\nimport { animated } from \"react-spring/renderprops.cjs\";\nimport Ink from \"react-ink\";\nimport { css, cx } from \"emotion\";\nimport { disableScrollY } from \"../theme/styles\";\nimport MountTransition from \"./shared/MountTransition\";\n\nconst transitionProps = {\n from: { opacity: 0, transform: \"translateX(100%)\" },\n enter: { opacity: 1, transform: \"translateX(0)\" },\n leave: { opacity: 0, transform: \"translateX(100%)\", pointerEvents: \"none\" }\n};\n\nclass SideBar extends React.PureComponent<SidebarProps> {\n static defaultProps: Partial<SidebarProps> = {\n closeOnOutsideClick: true\n };\n\n componentDidMount() {\n if (this.props.isOpen) document.body.classList.add(disableScrollY);\n }\n\n componentDidUpdate() {\n if (this.props.isOpen) {\n document.body.classList.add(disableScrollY);\n } else {\n document.body.classList.remove(disableScrollY);\n }\n }\n\n componentWillUnmount() {\n if (this.props.isOpen) {\n document.body.classList.remove(disableScrollY);\n }\n }\n\n onOutsideClick = () => {\n const { onOutsideClick, closeOnOutsideClick, onClose } = this.props;\n if (closeOnOutsideClick) {\n onClose();\n }\n if (onOutsideClick) onOutsideClick();\n };\n\n render() {\n const {\n width,\n isOpen,\n children,\n onClose,\n onOutsideClick,\n closeOnOutsideClick\n } = this.props;\n const _sidebarStyle = cx(sidebarStyle, css({ width }));\n\n return (\n <MountTransition visible={isOpen} {...transitionProps}>\n {styles => (\n <>\n <animated.div\n style={{ opacity: styles.opacity }}\n className={sidebarWrapperStyle}\n onClick={\n onOutsideClick || closeOnOutsideClick\n ? this.onOutsideClick\n : undefined\n }\n data-testid=\"shadowArea\"\n />\n\n <animated.div className={_sidebarStyle} style={styles}>\n <div className={closeStyle} onClick={onClose}>\n <i className=\"pi pi-close\" />\n <Ink />\n </div>\n\n <div style={{ overflowY: \"auto\", height: \"100%\" }}>\n {children}\n </div>\n </animated.div>\n </>\n )}\n </MountTransition>\n );\n }\n}\n\nexport default SideBar;\n","import * as React from \"react\";\nimport Rheostat from \"rheostat\";\nimport { cx, injectGlobal } from \"emotion\";\nimport { typography } from \"../theme\";\nimport { SliderProps } from \"./typings/Slider\";\nimport { sliderHeader, rheostatOverrides } from \"./styles/Slider.styles\";\nimport { colors } from \"pebble-shared\";\n\nlet rheostatStylesOverriden = false;\nfunction overrideRheostatStyles() {\n if (rheostatStylesOverriden) return;\n injectGlobal(rheostatOverrides);\n rheostatStylesOverriden = true;\n}\n\nconst Slider: React.FunctionComponent<SliderProps> = ({\n className,\n large,\n title,\n disabled,\n required,\n valueLabelExtractor,\n values,\n onValuesUpdated,\n ...rest\n}) => {\n overrideRheostatStyles();\n const mainClass = cx(className, {\n __pebble__slider__disabled: !!disabled,\n __pebble__slider__large: !!large\n });\n\n const _values = Array.isArray(values) ? values.slice(0) : values || [];\n\n if (Array.isArray(values)) {\n if (!values[0] && rest.min !== undefined) {\n _values[0] = rest.min;\n }\n if (!values[1] && rest.max) {\n _values[1] = rest.max;\n }\n }\n\n return (\n <div className={mainClass}>\n <div className={sliderHeader}>\n <div style={large ? typography.normal.light : typography.normal.light}>\n {title}\n {required && <span style={{ color: colors.red.base }}> *</span>}\n </div>\n <div style={large ? typography.l.regular : typography.normal.regular}>\n {valueLabelExtractor\n ? valueLabelExtractor()\n : `${_values[0]} - ${_values[1]}`}\n </div>\n </div>\n <Rheostat\n aria-valuemax={rest.max}\n aria-valuemin={rest.min}\n disabled={disabled}\n onValuesUpdated={onValuesUpdated && (args => onValuesUpdated(args))}\n values={_values}\n {...rest}\n />\n </div>\n );\n};\n\nexport default Slider;\n","import { typography } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const headStyle = css({\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\"\n});\n\nexport const headSection = css({\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n cursor: \"pointer\",\n \"> div\": {\n fontSize: 14\n }\n});\n\nexport const headingStyle = css({ ...typography.normal.regular });\n\nexport const dotStyle = css({\n height: 20,\n width: 20,\n backgroundColor: colors.gray.base,\n borderRadius: \"50%\",\n border: \"5px solid white\",\n marginTop: 18,\n position: \"relative\",\n zIndex: 9\n});\n\nexport const activeDotStyle = css({\n backgroundColor: colors.violet.base\n});\n\nexport const contentWrapper = css({\n marginTop: -10\n});\n\nexport const footerStyle = css({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginTop: 50\n});\n\nexport const stepperLineStyle = css({\n height: 2,\n bottom: 9,\n position: \"absolute\",\n transition: \"width 100ms ease-out\",\n backgroundColor: colors.violet.base\n});\n","import * as React from \"react\";\nimport { css, cx } from \"emotion\";\nimport { StepperProps, StepperState } from \"./typings/Stepper\";\nimport Button from \"./Button\";\nimport {\n activeDotStyle,\n contentWrapper,\n dotStyle,\n footerStyle,\n headingStyle,\n headSection,\n headStyle,\n stepperLineStyle\n} from \"./styles/Stepper.styles\";\nimport { colors } from \"pebble-shared\";\n\nfunction noop() {}\n\nclass Stepper extends React.PureComponent<StepperProps, StepperState> {\n static defaultProps: Partial<StepperProps> = {\n allowSkip: true,\n cancelLabel: \"Cancel\",\n nextLabel: \"Next\",\n prevLabel: \"Prev\",\n doneLabel: \"Done\",\n onBeforeNext: () => true,\n onBeforePrev: () => true,\n onChange: () => {},\n onCancel: () => {},\n onDone: () => {},\n renderFooterElement: ({ leftButtonData, rightButtonData }, props) => {\n return (\n <footer className={footerStyle}>\n <Button\n size=\"large\"\n width={100}\n type={\"secondary\"}\n onClick={leftButtonData.action}\n >\n {leftButtonData.label}\n </Button>\n <Button\n size=\"large\"\n width={100}\n loading={props.isRightButtonLoading}\n onClick={rightButtonData.action}\n >\n {rightButtonData.label}\n </Button>\n </footer>\n );\n }\n };\n\n state: StepperState = {\n active: this.props.initialSelectedIndex || 0\n };\n\n private goToNextPage = async () => {\n const { onBeforeNext, data } = this.props;\n const allow = await onBeforeNext(this.state.active);\n if (allow) this.goToPage(Math.min(data.length - 1, this.state.active + 1));\n };\n\n private goToPrevPage = async () => {\n const allow = await this.props.onBeforePrev(this.state.active);\n if (allow) this.goToPage(Math.max(0, this.state.active - 1));\n };\n\n private goToPage = (index: number): void => {\n const prev = this.state.active;\n this.setState(\n {\n active: index\n },\n () =>\n this.props.onChange({\n prev,\n current: this.state.active\n })\n );\n };\n\n private getHeadings = (): string[] => {\n const { headingExtractor, data } = this.props;\n return data.map(datum => headingExtractor({ item: datum }));\n };\n\n private getLeftButtonData = () => {\n const { cancelLabel, prevLabel, onCancel } = this.props;\n return this.state.active === 0\n ? {\n label: cancelLabel,\n action: onCancel\n }\n : {\n label: prevLabel,\n action: this.goToPrevPage\n };\n };\n\n private getRightButtonData = () => {\n const { nextLabel, onDone, data, doneLabel } = this.props;\n return this.state.active === data.length - 1\n ? {\n label: doneLabel,\n action: onDone\n }\n : {\n label: nextLabel,\n action: this.goToNextPage\n };\n };\n\n render() {\n const {\n data,\n renderContentElement,\n keyExtractor,\n renderFooterElement,\n className,\n allowSkip\n } = this.props;\n\n const { active } = this.state;\n\n const args = {\n goToNext: this.goToNextPage,\n goToPage: this.goToPage,\n goToPrev: this.goToPrevPage,\n leftButtonData: this.getLeftButtonData(),\n rightButtonData: this.getRightButtonData()\n };\n\n return (\n <div className={className}>\n <div className={headStyle}>\n {this.getHeadings().map((heading, i) => {\n const dotClass = cx(dotStyle, {\n [activeDotStyle]: i <= active\n });\n\n const headingColor =\n i === active\n ? colors.violet.base\n : allowSkip\n ? colors.gray.base\n : undefined;\n\n return (\n <div\n key={keyExtractor(data[i])}\n className={cx(headSection, {\n [css({ cursor: \"inherit\" })]: !allowSkip\n })}\n onClick={allowSkip ? () => this.goToPage(i) : noop}\n >\n <div className={headingStyle} style={{ color: headingColor }}>\n {heading}\n </div>\n <div className={dotClass} />\n </div>\n );\n })}\n <div\n className={stepperLineStyle}\n style={{\n width: `${(100 / (2 * data.length)) * 2 * active}%`,\n marginLeft: `${100 / (2 * data.length)}%`\n }}\n />\n </div>\n\n <div className={contentWrapper}>\n {data.map((datum, i) => (\n <div\n key={keyExtractor(datum)}\n className={cx({\n [css({ display: \"none\" })]: i !== this.state.active\n })}\n >\n {renderContentElement({\n item: datum,\n isSelected: i === this.state.active,\n ...args\n })}\n </div>\n ))}\n\n {renderFooterElement(\n {\n activeIndex: this.state.active,\n ...args\n },\n this.props\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default Stepper;\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport { typography } from \"../../theme\";\n\nexport const labelTextStyle = css({\n ...typography.s.bold,\n color: colors.gray.dark,\n marginRight: \"10px\"\n});\n\nexport const disabledStyle = css({ cursor: \"not-allowed\" });\n\nexport const labelStyle = css({\n width: \"28px\",\n height: \"14px\",\n backgroundColor: colors.gray.base,\n position: \"relative\",\n display: \"inline-block\",\n borderRadius: \"14px\",\n cursor: \"pointer\"\n});\n// for accessible and touch areas for ios android\nexport const fixedLabelStyle = css({\n padding: \"15px 0px\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\"\n});\n\nexport const inputStyle = css({\n width: 0,\n height: 0,\n opacity: 0\n});\n\nexport const switchStyle = css({\n position: \"absolute\",\n height: \"10px\",\n width: \"10px\",\n left: \"2px\",\n bottom: \"2px\",\n borderRadius: \"50%\",\n backgroundColor: colors.white.base,\n transition: \".4s\"\n});\n\nexport const selectedLabel = css({ backgroundColor: colors.violet.base });\n\nexport const selectedSwitch = css({ transform: \"translateX(14px)\" });\n","import * as React from \"react\";\nimport { cx } from \"emotion\";\nimport {\n labelTextStyle,\n labelStyle,\n selectedLabel,\n inputStyle,\n selectedSwitch,\n switchStyle,\n fixedLabelStyle,\n disabledStyle\n} from \"./styles/Switch.styles\";\nimport { SwitchProps, SwitchState } from \"./typings/Switch\";\n\nexport default class Switch extends React.PureComponent<\n SwitchProps,\n SwitchState\n> {\n state = {\n value: this.props.initialValue || false\n };\n\n render() {\n const { onChange, className, label, disabled } = this.props;\n const { value } = this.state;\n\n return (\n <label\n className={cx(className, fixedLabelStyle, {\n [disabledStyle]: !!disabled\n })}\n >\n <span className={labelTextStyle}>{label}</span>\n <div\n className={cx(labelStyle, {\n [selectedLabel]: value,\n [disabledStyle]: !!disabled\n })}\n >\n <input\n type=\"checkbox\"\n checked={value}\n className={inputStyle}\n onChange={() => {\n this.setState({\n value: !value\n });\n if (onChange) {\n onChange(!value);\n }\n }}\n disabled={disabled}\n />\n <span\n className={cx({\n [switchStyle]: true,\n [selectedSwitch]: value\n })}\n />\n </div>\n </label>\n );\n }\n}\n","import { constants, mixins, typography } from \"../../theme\";\nimport { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const tagStyle = css({\n ...typography.s.bold,\n ...mixins.flexSpaceBetween,\n borderRadius: constants.borderRadius,\n padding: \"0 10px\",\n height: 28,\n alignItems: \"center\",\n justifyContent: \"center\",\n display: \"inline-flex\",\n lineHeight: \"10px\",\n \"&.__pebble__tag__with__close\": {\n paddingRight: 0\n }\n});\n\nexport const iconClass = css({\n fontSize: 7,\n marginLeft: 5,\n height: \"inherit\",\n padding: \"10px 10px\",\n cursor: \"pointer\",\n position: \"relative\",\n \":hover\": {\n backgroundColor: colors.violet.lighter,\n borderTopRightRadius: constants.borderRadius,\n borderBottomRightRadius: constants.borderRadius\n }\n});\n","import * as React from \"react\";\nimport { colors } from \"pebble-shared\";\nimport { tagStyle, iconClass } from \"./styles/Tag.styles\";\nimport { TagProps } from \"./typings/Tag\";\nimport { cx } from \"emotion\";\nimport Ink from \"react-ink\";\n\nconst Tag: React.FunctionComponent<TagProps> = ({\n label,\n color,\n onClose,\n className\n}) => {\n const wrapperClassName = cx(tagStyle, {\n __pebble__tag__with__close: !!onClose\n });\n const _className = cx(wrapperClassName, className);\n return (\n <div\n className={_className}\n style={{\n color: colors[color].base,\n // @ts-ignore\n backgroundColor: colors[color].lightest || colors[color].light\n }}\n >\n {label}{\" \"}\n {onClose && (\n <i onClick={onClose} className={cx(\"pi\", \"pi-close\", iconClass)}>\n <Ink />\n </i>\n )}\n </div>\n );\n};\n\nexport default Tag;\n","import React from \"react\";\nimport { css, cx } from \"emotion\";\nimport { colors } from \"pebble-shared\";\nimport { TextProps } from \"./typings/Text\";\n\nconst Text: React.FunctionComponent<TextProps> = ({\n typography,\n color = colors.gray.darker,\n children,\n className\n}) => {\n const _className = css({\n ...typography,\n color\n });\n\n return <span className={cx(_className, className)}>{children}</span>;\n};\n\nexport default Text;\n","import { css } from \"emotion\";\nimport { colors } from \"pebble-shared\";\n\nexport const timePickerWrap = css({\n display: \"flex\",\n alignItems: \"center\",\n border: `1px solid ${colors.gray.light}`,\n borderRadius: \"3px\",\n cursor: \"pointer\",\n \"&:not([disabled]):hover\": {\n background: colors.gray.light\n }\n});\n\nexport const timePickerSelected = css({\n backgroundColor: colors.gray.lighter\n});\n\nexport const hourPicker = css({\n borderRadius: \"3px 0px 0px 3px\",\n borderRight: \"none\"\n});\n\nexport const seperator = css({\n color: colors.gray.dark,\n lineHeight: \"40px\"\n});\n\nexport const minutePicker = css({\n borderLeft: \"none\",\n borderRadius: \"0px 3px 3px 0px\"\n});\n\nexport const optionStyle = css({\n width: \"100px\"\n});\n","import * as React from \"react\";\nimport DropDown from \"./DropDown\";\nimport Option from \"./Option\";\nimport OptionGroupRadio from \"./OptionGroupRadio\";\nimport { cx, css } from \"emotion\";\nimport {\n timePickerWrap,\n timePickerSelected,\n hourPicker,\n minutePicker,\n optionStyle,\n seperator\n} from \"./styles/TimePicker.styles\";\nimport { TimePickerProps } from \"./typings/TimePicker\";\nimport { colors } from \"pebble-shared\";\n\nconst HOURS = /*#__PURE__*/ [...Array(12)].map((_, i) =>\n (\"00\" + (i + 1).toString(10)).slice(-2)\n);\nconst TWENTY_FOUR_HOURS = /*#__PURE__*/ [...Array(24)].map((_, i) =>\n (\"00\" + i.toString(10)).slice(-2)\n);\nconst MINUTES = /*#__PURE__*/ [...Array(4)].map((_, i) =>\n (\"00\" + (i * 15).toString(10)).slice(-2)\n);\n\nexport const iconStyle = css({\n marginLeft: 15,\n fontWeight: \"bold\",\n fontSize: 8,\n transition: \"transform ease-out .2s\",\n willTransform: \"transform\",\n marginTop: 2,\n color: colors.gray.dark,\n display: \"inline-block\"\n});\n\nexport const buttonStyle = css({\n padding: \"15px 20px\",\n fontSize: \"12px\",\n color: colors.gray.darker,\n lineHeight: \"9px\",\n width: \"105px\"\n});\n\nconst modifiers = {\n preventOverflow: {\n enabled: false\n },\n flip: {\n enabled: false\n }\n};\n\nconst TimePicker: React.FunctionComponent<TimePickerProps> = props => {\n const {\n selectedHour,\n selectedMinute,\n onHourChange,\n onMinuteChange,\n twentyFourHourFormat\n } = props;\n const selected = !!selectedHour || selectedMinute !== undefined;\n\n return (\n <div\n className={cx({\n [timePickerWrap]: true,\n [timePickerSelected]: selected\n })}\n >\n <DropDown\n labelClassName={hourPicker}\n isSelected={selected}\n labelComponent={({ isOpen, toggleDropdown }) => (\n <div\n onClick={() => {\n toggleDropdown();\n }}\n className={buttonStyle}\n data-test-id=\"hour-label\"\n >\n <span className={css({ marginRight: \"15px\" })}>\n {selectedHour !== undefined\n ? (\"00\" + selectedHour).slice(-2)\n : \"Hrs\"}\n </span>\n <span>\n <i\n className={cx(\"pi pi-arrow-drop-down\", iconStyle)}\n style={{ transform: isOpen ? \"rotate(180deg)\" : \"none\" }}\n />\n </span>\n </div>\n )}\n placement=\"bottom-start\"\n modifiers={modifiers}\n >\n {({ toggle }) => (\n <OptionGroupRadio\n onChange={value => {\n if (value !== undefined) {\n onHourChange(value);\n }\n toggle();\n }}\n selected={selectedHour}\n className={optionStyle}\n >\n {(twentyFourHourFormat ? TWENTY_FOUR_HOURS : HOURS).map(hour => (\n <Option\n key={hour}\n value={parseInt(hour, 10)}\n label={hour}\n className={optionStyle}\n />\n ))}\n </OptionGroupRadio>\n )}\n </DropDown>\n <span className={seperator}>:</span>\n <DropDown\n labelClassName={minutePicker}\n isSelected={selected}\n labelComponent={({ isOpen, toggleDropdown }) => (\n <div\n onClick={() => {\n toggleDropdown();\n }}\n className={buttonStyle}\n data-test-id=\"minute-label\"\n >\n <span className={css({ marginRight: \"15px\" })}>\n {selectedMinute !== undefined\n ? (\"00\" + selectedMinute).slice(-2)\n : \"mins\"}\n </span>\n <i\n className={cx(\"pi pi-arrow-drop-down\", iconStyle)}\n style={{ transform: isOpen ? \"rotate(180deg)\" : \"none\" }}\n />\n </div>\n )}\n placement=\"bottom-start\"\n modifiers={modifiers}\n >\n {({ toggle }) => (\n <OptionGroupRadio\n onChange={value => {\n if (value !== undefined) {\n onMinuteChange(value);\n }\n toggle();\n }}\n selected={selectedMinute}\n className={optionStyle}\n >\n {MINUTES.map(min => (\n <Option\n key={min}\n value={parseInt(min, 10)}\n label={min}\n className={optionStyle}\n />\n ))}\n </OptionGroupRadio>\n )}\n </DropDown>\n </div>\n );\n};\n\nexport default TimePicker;\n","import { css } from \"emotion\";\nimport { typography } from \"../../theme\";\nimport { colors } from \"pebble-shared\";\n\nexport const textStyle = css({\n ...typography.s.regular,\n color: colors.white.base,\n display: \"block\",\n padding: \"10px 16px\"\n});\n\nexport const popperStyle = css({\n margin: 4,\n boxShadow: \"none\",\n maxWidth: 320\n});\n","import * as React from \"react\";\nimport Popper from \"./Popper\";\nimport { TooltipProps, TooltipState } from \"./typings/Tooltip\";\nimport { colors } from \"pebble-shared\";\nimport { popperStyle, textStyle } from \"./styles/Tooltip.styles\";\nimport { cx } from \"emotion\";\n\nclass Tooltip extends React.PureComponent<TooltipProps, TooltipState> {\n state = {\n isOpen: !!this.props.isOpen\n };\n\n private defaultTooltip = () => (\n <span className={textStyle}>{this.props.text}</span>\n );\n\n private showTooltip = () => {\n if (this.props.disabled) return;\n this.setState({\n isOpen: true\n });\n };\n\n private hideTooltip = () => {\n this.setState({\n isOpen: false\n });\n };\n\n render() {\n const {\n placement,\n label,\n modifiers,\n isError,\n popperClassName\n } = this.props;\n\n return (\n <Popper\n label={() =>\n label({\n onMouseEnter: this.showTooltip,\n onMouseLeave: this.hideTooltip\n })\n }\n placement={placement}\n controlled\n popperBackgroundColor={isError ? colors.red.base : colors.gray.darker}\n modifiers={modifiers}\n isOpen={this.props.isOpen || this.state.isOpen}\n popperClassName={cx(popperStyle, popperClassName)}\n closeOnOutsideClick={false}\n >\n {this.props.renderElement || this.defaultTooltip}\n </Popper>\n );\n }\n}\n\nexport default Tooltip;\n","import { css } from \"emotion\";\nimport { constants } from \"../../theme\";\n\nexport const wrapper = css({\n position: \"relative\"\n});\n\nexport const optionsWrapper = css({\n width: \"100%\",\n position: \"absolute\",\n marginTop: -40,\n zIndex: 999,\n boxShadow: constants.boxShadow.elevated,\n transformOrigin: \"0 0\"\n});\n","import * as React from \"react\";\nimport debounce from \"just-debounce-it\";\nimport {\n TypeaheadProps,\n TypeaheadState,\n SearchBoxArgs\n} from \"./typings/Typeahead\";\nimport { cx } from \"emotion\";\nimport Input from \"./Input\";\nimport { optionsWrapper, wrapper } from \"./styles/TypeAhead.styles\";\nimport OutsideClick from \"./OutsideClick\";\nimport OptionGroupRadio from \"./OptionGroupRadio\";\nimport { animated } from \"react-spring/renderprops.cjs\";\nimport MountTransition from \"./shared/MountTransition\";\n\nfunction defaultSearchBox<OptionType>(\n { registerChange, onFocus, value }: SearchBoxArgs,\n props: TypeaheadProps<OptionType> & Required<typeof TypeAhead.defaultProps>\n) {\n const _inputProps = props.inputProps\n ? {\n ...props.inputProps.inputProps\n }\n : {};\n return (\n <Input\n {...props.inputProps}\n onChange={registerChange}\n placeholder={props.placeholder}\n inputProps={{\n ..._inputProps,\n onFocus,\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;\n if (e.keyCode === 8 && props.selected) {\n // keyCode for delete\n registerChange(\"\");\n props.onClear();\n }\n }\n }}\n value={value}\n errorMessage={props.errorMessage}\n loading={props.loading}\n required={props.required}\n disabled={props.disabled}\n />\n );\n}\n\nexport default class TypeAhead<OptionType> extends React.PureComponent<\n TypeaheadProps<OptionType> & Required<typeof TypeAhead.defaultProps>,\n TypeaheadState\n> {\n static defaultProps = {\n debounceTime: 500,\n onClear: () => {}\n };\n\n state: TypeaheadState = {\n value: this.props.initialValue || \"\",\n showSuggestions: false\n };\n\n private onChange = () => {\n this.props.onChange(this.state.value, this.props);\n };\n\n private debouncedChange = debounce(this.onChange, this.props.debounceTime);\n\n private registerChange = (value: string) => {\n this.setState(\n {\n value\n },\n this.debouncedChange\n );\n };\n\n private onFocus = () => {\n this.setState({\n showSuggestions: true\n });\n };\n\n private onSelect = (_value?: OptionType) => {\n this.props.onSelect(_value, this.props);\n\n this.setState({\n showSuggestions: false,\n value: (_value && this.props.valueExtractor(_value)) || \"\"\n });\n };\n\n render() {\n const {\n className,\n searchBox = defaultSearchBox,\n dropdownClassName,\n children\n } = this.props;\n\n const { showSuggestions, value } = this.state;\n\n return (\n <OutsideClick\n onOutsideClick={() =>\n this.setState({\n showSuggestions: false\n })\n }\n disabled={!showSuggestions}\n className={cx(wrapper, className)}\n >\n {searchBox(\n {\n registerChange: this.registerChange,\n onFocus: this.onFocus,\n value\n },\n this.props\n )}\n\n <MountTransition visible={showSuggestions} native>\n {transitionStyles => (\n <animated.div\n style={transitionStyles}\n className={cx(optionsWrapper, dropdownClassName)}\n >\n <OptionGroupRadio onChange={this.onSelect}>\n {children}\n </OptionGroupRadio>\n </animated.div>\n )}\n </MountTransition>\n </OutsideClick>\n );\n }\n}\n","export function capitalize(str: string): string {\n return str\n ? str\n .split(\" \")\n .map(s => s.charAt(0).toUpperCase() + s.slice(1))\n .join(\" \")\n : str;\n}\n","export function getShortenedNumber(\n num?: number | null,\n toFixed: number = 1\n): string | undefined {\n let formattedNum: string;\n if (!num && num !== 0) {\n return;\n }\n\n if (num >= 10000000) {\n formattedNum = (num / 10000000).toFixed(toFixed) + \" Cr\";\n } else if (num >= 100000) {\n formattedNum = (num / 100000).toFixed(toFixed) + \" L\";\n } else if (num >= 1000) {\n formattedNum = (num / 1000).toFixed(toFixed) + \" K\";\n } else if (num !== Math.floor(num)) {\n // has decimal part\n formattedNum = `${num.toFixed(toFixed)}`;\n } else {\n formattedNum = `${num}`;\n }\n return formattedNum;\n}\n","import isBrowser from \"is-in-browser\";\n\ndeclare global {\n interface Window {\n GoogleAnalyticsObject: string;\n ga: UniversalAnalytics.ga;\n }\n}\n\nexport function initGoogleAnalytics(gaId: string) {\n if (isBrowser) {\n ((s, o, g) => {\n window.GoogleAnalyticsObject = \"ga\";\n window.ga =\n window.ga ||\n (() => {\n (window.ga.q = window.ga.q || []).push(arguments);\n });\n window.ga.l = Date.now();\n const a = s.createElement(o) as HTMLScriptElement;\n const m = s.getElementsByTagName(o)[0];\n a.async = true;\n a.src = g;\n if (m.parentNode) m.parentNode.insertBefore(a, m);\n })(document, \"script\", \"https://www.google-analytics.com/analytics.js\");\n\n window.ga(\"create\", gaId, \"auto\");\n window.ga(\"send\", \"pageview\");\n }\n}\n"],"names":["colors","_css","React.createElement","inputStyle","_cx","React.createRef","React.Children","React.Component","disabledStyle","popperStyle"],"mappings":"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"}
|