XML 39 R29.htm IDEA: XBRL DOCUMENT v3.21.2
Revenue Recognition - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2021
Sep. 30, 2020
Sep. 30, 2021
Sep. 30, 2020
Disaggregation of Revenue [Line Items]        
Revenues $ 128,738 $ 113,587 $ 369,449 $ 313,214
Revenue, remaining performance obligation, percentage 100.00% 100.00% 100.00% 100.00%
Revenue recognized over time        
Disaggregation of Revenue [Line Items]        
Revenues $ 7,427 $ 5,542 $ 21,006 $ 15,523
Revenue recognized over time | Service Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 5.80% 4.90% 5.70% 5.00%
Revenue recognized at a point in time        
Disaggregation of Revenue [Line Items]        
Revenues $ 121,311 $ 108,045 $ 348,443 $ 297,691
Revenue recognized at a point in time | Product Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 94.20% 95.10% 94.30% 95.00%
United States        
Disaggregation of Revenue [Line Items]        
Revenues $ 111,281 $ 102,945 $ 313,326 $ 278,191
Asia        
Disaggregation of Revenue [Line Items]        
Revenues 3,927 1,634 12,402 4,619
Canada        
Disaggregation of Revenue [Line Items]        
Revenues 3,021 2,615 9,086 7,876
Europe        
Disaggregation of Revenue [Line Items]        
Revenues 7,044 3,728 23,396 11,796
Mexico        
Disaggregation of Revenue [Line Items]        
Revenues 948 1,226 4,025 4,221
Middle East        
Disaggregation of Revenue [Line Items]        
Revenues 1,996 904 5,757 4,659
Other        
Disaggregation of Revenue [Line Items]        
Revenues $ 521 $ 535 $ 1,457 $ 1,852