{"version":3,"file":"watch.mjs","sources":["../../../../../packages/service/route/use/watch.ts"],"sourcesContent":["import { watch } from \"vue\";\nimport type { RouteState } from \"../types\";\nimport { toLngLat, toLngLats, toLonLatNumberArray } from \"~/utils/converter\";\n\nexport function useWatch(state: RouteState) {\n  function resetRoutes() {\n    state.drivingLines = [];\n    state.walkLines = [];\n    state.busLines = [];\n    state.busMarkers = [];\n    state.metroMarkers = [];\n  }\n\n  function resetPlans() {\n    state.transitPlans = [];\n    state.transitPlanIndex = 0;\n    state.drivingPlans = [];\n    state.drivingPlanIndex = 0;\n  }\n\n  watch(\n    () => {\n      const { startMarker, endMarker, routeType, drivingPolicy, transitPolicy } = state;\n      return { startMarker, endMarker, routeType, drivingPolicy, transitPolicy };\n    },\n    ({ startMarker, endMarker, routeType, drivingPolicy, transitPolicy }) => {\n      resetPlans();\n      resetRoutes();\n      if (startMarker && endMarker) {\n        switch (routeType) {\n          case 0:\n            state.drivingRoute?.setPolicy(drivingPolicy);\n            state.drivingRoute?.search(toLngLat(startMarker), toLngLat(endMarker));\n            break;\n          case 1:\n            state.transitRoute?.setPolicy(transitPolicy);\n            state.transitRoute?.search(toLngLat(startMarker), toLngLat(endMarker));\n            break;\n          case 2:\n            state.drivingRoute?.setPolicy(4);\n            state.drivingRoute?.search(toLngLat(startMarker), toLngLat(endMarker));\n            break;\n          default:\n            break;\n        }\n      }\n    },\n    { immediate: true }\n  );\n\n  watch(\n    () => ({ drivingPlans: state.drivingPlans, drivingPlanIndex: state.drivingPlanIndex }),\n    ({ drivingPlans, drivingPlanIndex }) => {\n      resetRoutes();\n      const { routelatlon } = drivingPlans[drivingPlanIndex] || {};\n      if (!routelatlon) return;\n      const lines = routelatlon\n        .split(\";\")\n        .filter(e => e)\n        .map(toLonLatNumberArray);\n      state.drivingLines.push(lines);\n      //   drivingPlans.map(plan =>\n      //   plan.routelatlon\n      //     .split(\";\")\n      //     .filter(e => e)\n      //     .map(e => e.split(\",\").map(Number))\n      // );\n      state.tdtMap?.setViewport(toLngLats(state.drivingLines.flat()));\n    },\n    { immediate: true }\n  );\n\n  watch(\n    () => ({ transitPlans: state.transitPlans, transitPlanIndex: state.transitPlanIndex }),\n    ({ transitPlans, transitPlanIndex }) => {\n      resetRoutes();\n      const { segments } = transitPlans[transitPlanIndex] || {};\n      if (!segments) return;\n      segments.forEach(segment => {\n        const lines = segment.segmentLine.map(line =>\n          line.linePoint\n            .split(\";\")\n            .filter(e => e)\n            .map(toLonLatNumberArray)\n        );\n        const markers = [segment.stationStart, segment.stationEnd].map(station => toLonLatNumberArray(station.lonlat));\n        switch (segment.segmentType) {\n          case 1:\n          case 4:\n            state.walkLines.push(...lines);\n            break;\n          case 2:\n            state.busMarkers.push(...markers);\n            state.busLines.push(...lines);\n            break;\n          case 3:\n            state.metroMarkers.push(...markers);\n            state.busLines.push(...lines);\n            break;\n          default:\n            break;\n        }\n      });\n      state.tdtMap?.setViewport(toLngLats([...state.busLines, ...state.walkLines].flat()));\n    },\n    { immediate: true }\n  );\n}\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;"}