@@ -1794,6 +1794,66 @@ function cacheDom() {
17941794 dom . distanceConfirmBtn = $ ( 'distanceConfirmBtn' ) ;
17951795}
17961796
1797+ function handleGlobalUnitChange ( e ) {
1798+ state . preferredUnit = e . target . value ;
1799+ // Refresh visualizations that use the unit
1800+ drawReferenceVisualization ( ) ;
1801+ updateMeasureLabel ( ) ;
1802+
1803+ // Also update all pinned measurement labels
1804+ state . measureMode . pinned . forEach ( ( item ) => {
1805+ if ( item . ui . label ) {
1806+ const sourceIcon = item . source === 'manual' ? '📏' : '📡' ;
1807+ item . ui . label . setIcon ( L . divIcon ( {
1808+ className : 'measure-label' ,
1809+ html : createDistanceLabelHtml ( {
1810+ meters : item . meters ,
1811+ color : COLORS . MEASURE ,
1812+ icon : sourceIcon ,
1813+ showPin : false ,
1814+ extraClass : 'distance-label--measure' ,
1815+ } ) ,
1816+ iconAnchor : [ 0 , 0 ] ,
1817+ } ) ) ;
1818+ }
1819+ } ) ;
1820+
1821+ saveSettings ( ) ;
1822+ }
1823+
1824+ function setupModalEventHandlers ( ) {
1825+ // Distance modal handlers
1826+ if ( dom . distanceCancelBtn ) {
1827+ dom . distanceCancelBtn . addEventListener ( 'click' , handleDistanceModalCancel ) ;
1828+ }
1829+ if ( dom . distanceConfirmBtn ) {
1830+ dom . distanceConfirmBtn . addEventListener ( 'click' , handleDistanceModalConfirm ) ;
1831+ }
1832+ if ( dom . distanceInput ) {
1833+ dom . distanceInput . addEventListener ( 'keydown' , ( e ) => {
1834+ if ( e . key === 'Enter' ) {
1835+ handleDistanceModalConfirm ( ) ;
1836+ }
1837+ } ) ;
1838+ dom . distanceInput . addEventListener ( 'input' , ( ) => {
1839+ dom . distanceError . classList . add ( 'hidden' ) ;
1840+ } ) ;
1841+ }
1842+ if ( dom . distanceModal ) {
1843+ dom . distanceModal . addEventListener ( 'keydown' , ( e ) => {
1844+ if ( e . key === 'Escape' ) {
1845+ handleDistanceModalCancel ( ) ;
1846+ }
1847+ } ) ;
1848+ // Close on backdrop click
1849+ dom . distanceModal . addEventListener ( 'click' , ( e ) => {
1850+ if ( e . target === dom . distanceModal ) {
1851+ handleDistanceModalCancel ( ) ;
1852+ }
1853+ } ) ;
1854+ }
1855+ }
1856+
17971857function setupEventHandlers ( ) {
17981858 dom . mapImageInput . addEventListener ( 'change' , handleImageImport ) ;
17991859 dom . addPairButton . addEventListener ( 'click' , beginPairMode ) ;
@@ -1812,32 +1872,7 @@ function setupEventHandlers() {
18121872
18131873 // Global unit selector
18141874 if ( dom . globalUnitSelect ) {
1815- dom . globalUnitSelect . addEventListener ( 'change' , ( e ) => {
1816- state . preferredUnit = e . target . value ;
1817- // Refresh visualizations that use the unit
1818- drawReferenceVisualization ( ) ;
1819- updateMeasureLabel ( ) ;
1820-
1821- // Also update all pinned measurement labels
1822- state . measureMode . pinned . forEach ( ( item ) => {
1823- if ( item . ui . label ) {
1824- const sourceIcon = item . source === 'manual' ? '📏' : '📡' ;
1825- item . ui . label . setIcon ( L . divIcon ( {
1826- className : 'measure-label' ,
1827- html : createDistanceLabelHtml ( {
1828- meters : item . meters ,
1829- color : COLORS . MEASURE ,
1830- icon : sourceIcon ,
1831- showPin : false ,
1832- extraClass : 'distance-label--measure' ,
1833- } ) ,
1834- iconAnchor : [ 0 , 0 ] ,
1835- } ) ) ;
1836- }
1837- } ) ;
1838-
1839- saveSettings ( ) ;
1840- } ) ;
1875+ dom . globalUnitSelect . addEventListener ( 'change' , handleGlobalUnitChange ) ;
18411876 }
18421877
18431878 // Scale and measure mode handlers
@@ -1857,36 +1892,7 @@ function setupEventHandlers() {
18571892 dom . clearMeasurementsButton . addEventListener ( 'click' , clearAllMeasurements ) ;
18581893 }
18591894
1860- // Distance modal handlers
1861- if ( dom . distanceCancelBtn ) {
1862- dom . distanceCancelBtn . addEventListener ( 'click' , handleDistanceModalCancel ) ;
1863- }
1864- if ( dom . distanceConfirmBtn ) {
1865- dom . distanceConfirmBtn . addEventListener ( 'click' , handleDistanceModalConfirm ) ;
1866- }
1867- if ( dom . distanceInput ) {
1868- dom . distanceInput . addEventListener ( 'keydown' , ( e ) => {
1869- if ( e . key === 'Enter' ) {
1870- handleDistanceModalConfirm ( ) ;
1871- }
1872- } ) ;
1873- dom . distanceInput . addEventListener ( 'input' , ( ) => {
1874- dom . distanceError . classList . add ( 'hidden' ) ;
1875- } ) ;
1876- }
1877- if ( dom . distanceModal ) {
1878- dom . distanceModal . addEventListener ( 'keydown' , ( e ) => {
1879- if ( e . key === 'Escape' ) {
1880- handleDistanceModalCancel ( ) ;
1881- }
1882- } ) ;
1883- // Close on backdrop click
1884- dom . distanceModal . addEventListener ( 'click' , ( e ) => {
1885- if ( e . target === dom . distanceModal ) {
1886- handleDistanceModalCancel ( ) ;
1887- }
1888- } ) ;
1889- }
1895+ setupModalEventHandlers ( ) ;
18901896}
18911897
18921898function saveSettings ( ) {
0 commit comments