XML 36 R27.htm IDEA: XBRL DOCUMENT v3.22.2.2
Revenue Recognition - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2022
Sep. 30, 2021
Sep. 30, 2022
Sep. 30, 2021
Disaggregation of Revenue [Line Items]        
Revenues $ 148,009 $ 128,738 $ 418,244 $ 369,449
Revenue, remaining performance obligation, percentage 100.00% 100.00% 100.00% 100.00%
Revenue recognized over time        
Disaggregation of Revenue [Line Items]        
Revenues $ 9,324 $ 7,427 $ 25,554 $ 21,006
Revenue recognized over time | Service Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 6.30% 5.80% 6.10% 5.70%
Revenue recognized at a point in time        
Disaggregation of Revenue [Line Items]        
Revenues $ 138,685 $ 121,311 $ 392,690 $ 348,443
Revenue recognized at a point in time | Product Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 93.70% 94.20% 93.90% 94.30%
United States        
Disaggregation of Revenue [Line Items]        
Revenues $ 128,434 $ 111,281 $ 362,012 $ 313,326
Asia        
Disaggregation of Revenue [Line Items]        
Revenues 4,257 3,927 11,384 12,402
Canada        
Disaggregation of Revenue [Line Items]        
Revenues 3,761 3,021 9,669 9,086
Europe        
Disaggregation of Revenue [Line Items]        
Revenues 7,489 7,044 22,842 23,396
Mexico        
Disaggregation of Revenue [Line Items]        
Revenues 1,034 948 2,419 4,025
Middle East        
Disaggregation of Revenue [Line Items]        
Revenues 2,475 1,996 6,258 5,757
Other        
Disaggregation of Revenue [Line Items]        
Revenues $ 559 $ 521 $ 3,660 $ 1,457