{"version":3,"file":"watch.mjs","sources":["../../../../../packages/service/route/use/watch.ts"],"sourcesContent":["import { watch } from \"vue\";\r\nimport type { RouteState } from \"../types\";\r\nimport { toLngLat, toLngLats, toLonLatNumberArray } from \"~/utils/converter\";\r\n\r\nexport function useWatch(state: RouteState) {\r\n  function resetRoutes() {\r\n    state.drivingLines = [];\r\n    state.walkLines = [];\r\n    state.busLines = [];\r\n    state.busMarkers = [];\r\n    state.metroMarkers = [];\r\n  }\r\n\r\n  function resetPlans() {\r\n    state.transitPlans = [];\r\n    state.transitPlanIndex = 0;\r\n    state.drivingPlans = [];\r\n    state.drivingPlanIndex = 0;\r\n  }\r\n\r\n  watch(\r\n    () => {\r\n      const { startMarker, endMarker, routeType, drivingPolicy, transitPolicy } = state;\r\n      return { startMarker, endMarker, routeType, drivingPolicy, transitPolicy };\r\n    },\r\n    ({ startMarker, endMarker, routeType, drivingPolicy, transitPolicy }) => {\r\n      resetPlans();\r\n      resetRoutes();\r\n      if (startMarker && endMarker) {\r\n        switch (routeType) {\r\n          case 0:\r\n            state.drivingRoute?.setPolicy(drivingPolicy);\r\n            state.drivingRoute?.search(toLngLat(startMarker), toLngLat(endMarker));\r\n            break;\r\n          case 1:\r\n            state.transitRoute?.setPolicy(transitPolicy);\r\n            state.transitRoute?.search(toLngLat(startMarker), toLngLat(endMarker));\r\n            break;\r\n          case 2:\r\n            state.drivingRoute?.setPolicy(4);\r\n            state.drivingRoute?.search(toLngLat(startMarker), toLngLat(endMarker));\r\n            break;\r\n          default:\r\n            break;\r\n        }\r\n      }\r\n    },\r\n    { immediate: true }\r\n  );\r\n\r\n  watch(\r\n    () => ({ drivingPlans: state.drivingPlans, drivingPlanIndex: state.drivingPlanIndex }),\r\n    ({ drivingPlans, drivingPlanIndex }) => {\r\n      resetRoutes();\r\n      const { routelatlon } = drivingPlans[drivingPlanIndex] || {};\r\n      if (!routelatlon) return;\r\n      const lines = routelatlon\r\n        .split(\";\")\r\n        .filter(e => e)\r\n        .map(toLonLatNumberArray);\r\n      state.drivingLines.push(lines);\r\n      //   drivingPlans.map(plan =>\r\n      //   plan.routelatlon\r\n      //     .split(\";\")\r\n      //     .filter(e => e)\r\n      //     .map(e => e.split(\",\").map(Number))\r\n      // );\r\n      state.tdtMap?.setViewport(toLngLats(state.drivingLines.flat()));\r\n    },\r\n    { immediate: true }\r\n  );\r\n\r\n  watch(\r\n    () => ({ transitPlans: state.transitPlans, transitPlanIndex: state.transitPlanIndex }),\r\n    ({ transitPlans, transitPlanIndex }) => {\r\n      resetRoutes();\r\n      const { segments } = transitPlans[transitPlanIndex] || {};\r\n      if (!segments) return;\r\n      segments.forEach(segment => {\r\n        const lines = segment.segmentLine.map(line =>\r\n          line.linePoint\r\n            .split(\";\")\r\n            .filter(e => e)\r\n            .map(toLonLatNumberArray)\r\n        );\r\n        const markers = [segment.stationStart, segment.stationEnd].map(station => toLonLatNumberArray(station.lonlat));\r\n        switch (segment.segmentType) {\r\n          case 1:\r\n          case 4:\r\n            state.walkLines.push(...lines);\r\n            break;\r\n          case 2:\r\n            state.busMarkers.push(...markers);\r\n            state.busLines.push(...lines);\r\n            break;\r\n          case 3:\r\n            state.metroMarkers.push(...markers);\r\n            state.busLines.push(...lines);\r\n            break;\r\n          default:\r\n            break;\r\n        }\r\n      });\r\n      state.tdtMap?.setViewport(toLngLats([...state.busLines, ...state.walkLines].flat()));\r\n    },\r\n    { immediate: true }\r\n  );\r\n}\r\n"],"names":["useWatch","state","resetRoutes","resetPlans","watch","startMarker","endMarker","routeType","drivingPolicy","transitPolicy","_a","_b","toLngLat","_c","_d","_e","_f","drivingPlans","drivingPlanIndex","routelatlon","lines","e","toLonLatNumberArray","toLngLats","transitPlans","transitPlanIndex","segments","segment","line","markers","station"],"mappings":";;AAIO,SAASA,EAASC,GAAmB;AAC1C,WAASC,IAAc;AACrB,IAAAD,EAAM,eAAe,CAAC,GACtBA,EAAM,YAAY,CAAC,GACnBA,EAAM,WAAW,CAAC,GAClBA,EAAM,aAAa,CAAC,GACpBA,EAAM,eAAe,CAAC;AAAA,EAAA;AAGxB,WAASE,IAAa;AACpB,IAAAF,EAAM,eAAe,CAAC,GACtBA,EAAM,mBAAmB,GACzBA,EAAM,eAAe,CAAC,GACtBA,EAAM,mBAAmB;AAAA,EAAA;AAG3B,EAAAG;AAAA,IACE,MAAM;AACJ,YAAM,EAAE,aAAAC,GAAa,WAAAC,GAAW,WAAAC,GAAW,eAAAC,GAAe,eAAAC,MAAkBR;AAC5E,aAAO,EAAE,aAAAI,GAAa,WAAAC,GAAW,WAAAC,GAAW,eAAAC,GAAe,eAAAC,EAAc;AAAA,IAC3E;AAAA,IACA,CAAC,EAAE,aAAAJ,GAAa,WAAAC,GAAW,WAAAC,GAAW,eAAAC,GAAe,eAAAC,QAAoB;;AAGvE,UAFWN,EAAA,GACCD,EAAA,GACRG,KAAeC;AACjB,gBAAQC,GAAW;AAAA,UACjB,KAAK;AACG,aAAAG,IAAAT,EAAA,iBAAA,QAAAS,EAAc,UAAUF,KAC9BG,IAAAV,EAAM,iBAAN,QAAAU,EAAoB,OAAOC,EAASP,CAAW,GAAGO,EAASN,CAAS;AACpE;AAAA,UACF,KAAK;AACG,aAAAO,IAAAZ,EAAA,iBAAA,QAAAY,EAAc,UAAUJ,KAC9BK,IAAAb,EAAM,iBAAN,QAAAa,EAAoB,OAAOF,EAASP,CAAW,GAAGO,EAASN,CAAS;AACpE;AAAA,UACF,KAAK;AACG,aAAAS,IAAAd,EAAA,iBAAA,QAAAc,EAAc,UAAU,KAC9BC,IAAAf,EAAM,iBAAN,QAAAe,EAAoB,OAAOJ,EAASP,CAAW,GAAGO,EAASN,CAAS;AACpE;AAAA,QAEA;AAAA,IAGR;AAAA,IACA,EAAE,WAAW,GAAK;AAAA,EACpB,GAEAF;AAAA,IACE,OAAO,EAAE,cAAcH,EAAM,cAAc,kBAAkBA,EAAM;IACnE,CAAC,EAAE,cAAAgB,GAAc,kBAAAC,QAAuB;;AAC1B,MAAAhB,EAAA;AACZ,YAAM,EAAE,aAAAiB,EAAY,IAAIF,EAAaC,CAAgB,KAAK,CAAC;AAC3D,UAAI,CAACC,EAAa;AACZ,YAAAC,IAAQD,EACX,MAAM,GAAG,EACT,OAAO,CAAKE,MAAAA,CAAC,EACb,IAAIC,CAAmB;AACpB,MAAArB,EAAA,aAAa,KAAKmB,CAAK,IAO7BV,IAAAT,EAAM,WAAN,QAAAS,EAAc,YAAYa,EAAUtB,EAAM,aAAa,KAAA,CAAM;AAAA,IAC/D;AAAA,IACA,EAAE,WAAW,GAAK;AAAA,EACpB,GAEAG;AAAA,IACE,OAAO,EAAE,cAAcH,EAAM,cAAc,kBAAkBA,EAAM;IACnE,CAAC,EAAE,cAAAuB,GAAc,kBAAAC,QAAuB;;AAC1B,MAAAvB,EAAA;AACZ,YAAM,EAAE,UAAAwB,EAAS,IAAIF,EAAaC,CAAgB,KAAK,CAAC;AACxD,MAAKC,MACLA,EAAS,QAAQ,CAAWC,MAAA;AACpB,cAAAP,IAAQO,EAAQ,YAAY;AAAA,UAAI,CAAAC,MACpCA,EAAK,UACF,MAAM,GAAG,EACT,OAAO,CAAKP,MAAAA,CAAC,EACb,IAAIC,CAAmB;AAAA,QAC5B,GACMO,IAAU,CAACF,EAAQ,cAAcA,EAAQ,UAAU,EAAE,IAAI,CAAWG,MAAAR,EAAoBQ,EAAQ,MAAM,CAAC;AAC7G,gBAAQH,EAAQ,aAAa;AAAA,UAC3B,KAAK;AAAA,UACL,KAAK;AACG,YAAA1B,EAAA,UAAU,KAAK,GAAGmB,CAAK;AAC7B;AAAA,UACF,KAAK;AACG,YAAAnB,EAAA,WAAW,KAAK,GAAG4B,CAAO,GAC1B5B,EAAA,SAAS,KAAK,GAAGmB,CAAK;AAC5B;AAAA,UACF,KAAK;AACG,YAAAnB,EAAA,aAAa,KAAK,GAAG4B,CAAO,GAC5B5B,EAAA,SAAS,KAAK,GAAGmB,CAAK;AAC5B;AAAA,QAEA;AAAA,MACJ,CACD,IACDV,IAAAT,EAAM,WAAN,QAAAS,EAAc,YAAYa,EAAU,CAAC,GAAGtB,EAAM,UAAU,GAAGA,EAAM,SAAS,EAAE,KAAM,CAAA;AAAA,IACpF;AAAA,IACA,EAAE,WAAW,GAAK;AAAA,EACpB;AACF;"}