{"version":3,"sources":["webpack:///./src/components/MetricGrid.vue?4222","webpack:///./src/components/MetricGrid.vue","webpack:///./src/components/MetricGrid.vue?b52e","webpack:///./src/components/Chart/FilterTabs.vue?b0a3","webpack:///./src/components/Chart/FilterTabs.vue","webpack:///./src/components/Chart/FilterTabs.vue?b77d","webpack:///./src/components/MetricStat.vue?30b3","webpack:///./src/components/MetricStat.vue","webpack:///./src/components/MetricStat.vue?6415","webpack:///./src/components/MetricSource.vue?5afe","webpack:///./src/components/MetricSource.vue","webpack:///./src/components/MetricSource.vue?a4a9","webpack:///./src/components/MetricHighlight.vue?bc0a","webpack:///./src/components/MetricHighlight.vue","webpack:///./src/components/MetricHighlight.vue?9b35","webpack:///./src/components/MetricSource.vue?da49","webpack:///./src/components/MetricTitle.vue?85b8","webpack:///./src/components/MetricTitle.vue","webpack:///./src/components/MetricTitle.vue?02f0","webpack:///./src/components/Chart/FilterTabs.vue?57ea","webpack:///./src/components/MetricStat.vue?0823","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/views/economy/BuildingPermit.vue?a4fa","webpack:///./src/views/economy/BuildingPermit.vue","webpack:///./src/views/economy/BuildingPermit.vue?7df4","webpack:///./src/components/SectionTitle.vue?8763","webpack:///./src/components/SectionTitle.vue","webpack:///./src/components/SectionTitle.vue?47b1"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","key","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","render","_ctx","_cache","$props","$setup","$data","$options","$slots","filterTabs","summaryTitle","metricStats","props","__exports__","options","option","type","onClick","$event","handleClick","active","this","$emit","Array","featured","label","value","String","Boolean","href","target","metric","source","Object","content","title","_defineProperties","i","length","descriptor","enumerable","configurable","writable","defineProperty","_createClass","Constructor","protoProps","staticProps","prototype","_component_Spinner","_component_MetricTitle","_component_FilterTabs","_component_LineChart","_component_MetricSource","_component_SectionTitle","_component_MetricStat","_component_MetricHighlight","_component_MetricGrid","selectedData","filterOptions","onHandleClick","handleFilter","chart","metricData","dataLabels","dataProps","dateLabel","dateProp","sourceUrl","latestNumbers","monthChange","monthChangePercent","yearChange","yearChangePercent","highlight","_","data","summaryDate","Date","components","Spinner","LineChart","MetricTitle","SectionTitle","FilterTabs","MetricGrid","MetricStat","MetricSource","MetricHighlight","methods","debug","e","console","log","limitData","years","count","slice","beforeMount","topic","router","currentRoute","name","scales","yAxis","ticks","callback","parseInt","toFixed","lastItem","date","michiganbuildingpermits_12monthmovingaverage_000s"],"mappings":"2JAEMA,EAAa,CAAEC,MAAO,iBACtBC,EAAa,CAAED,MAAO,+DACtBE,EAAa,CAAEF,MAAO,OACtBG,EAAa,CAAEH,MAAO,OACtBI,EAAa,CACjBC,IAAK,EACLL,MAAO,YAEHM,EAAa,CAAEN,MAAO,OACtBO,EAAa,CAAEP,MAAO,OACtBQ,EAAa,CAAER,MAAO,OACtBS,EAAa,CAAET,MAAO,iEACtBU,EAAc,CAClBL,IAAK,EACLL,MAAO,uBAEHW,EAAc,CAAEX,MAAO,OACvBY,EAAc,CAClBP,IAAK,EACLL,MAAO,kBAGH,SAAUa,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,MAAOpB,EAAY,CAC3D,eAAoB,MAAOE,EAAY,CACrC,eAAoB,MAAOC,EAAY,CACrC,eAAoB,MAAOC,EAAY,CACrC,eAAYW,EAAKM,OAAQ,oBAG5BN,EAAKM,OAAOC,YACR,iBAAc,eAAoB,MAAOjB,EAAY,CACpD,eAAoB,MAAOE,EAAY,CACrC,eAAYQ,EAAKM,OAAQ,mBAG7B,eAAoB,IAAI,GAC5B,eAAoB,MAAOb,EAAY,CACrC,eAAoB,MAAOC,EAAY,CACrC,eAAYM,EAAKM,OAAQ,eAI/B,eAAoB,MAAOX,EAAY,CACpCK,EAAKM,OAAOE,cACR,iBAAc,eAAoB,MAAOZ,EAAa,CACrD,eAAoB,MAAOC,EAAa,CACtC,eAAYG,EAAKM,OAAQ,qBAG7B,eAAoB,IAAI,GAC3BN,EAAKM,OAAOG,aACR,iBAAc,eAAoB,MAAOX,EAAa,CACrD,eAAYE,EAAKM,OAAQ,kBAE3B,eAAoB,IAAI,GAC5B,eAAYN,EAAKM,OAAQ,wB,gECpDV,EAArB,qIAAwC,QAAnB,EAAU,gBAH9B,eAAQ,CACPI,MAAO,MAEY,W,qBCDrB,MAAMC,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD,U,oDCLf,eAAa,mBACb,IAAMd,EAAa,CAAEC,MAAO,cACtBC,EAAa,CAAC,WAGd,SAAUY,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,MAAOpB,EAAY,EAC1D,gBAAW,GAAO,eAAoB,OAAW,KAAM,eAAYe,EAAKY,SAAS,SAACC,GACjF,OAAQ,iBAAc,eAAoB,SAAU,CAClDC,KAAM,SACNvB,IAAKsB,EACLE,QAAS,gBAAe,SAACC,GAAD,OAAkBhB,EAAKiB,YAAYJ,KAAU,CAAC,YACtE3B,MAAO,eAAgB,CAAC,UAAW,CAAEgC,OAAQlB,EAAKkB,QAAUL,MAC3D,eAA4B,IAAXA,EAAe,WAAyB,IAAXA,EAAgB,SAAWA,EAAS,UAAW,GAAI1B,MAClG,QAXR,iB,4ECGqB,EAArB,yG,0BACE,EAAA+B,OAAS,EADX,oDAGE,SAAYL,GACVM,KAAKD,OAASL,EACdM,KAAKC,MAAM,cAAeP,OAL9B,GAAwC,QAAnB,EAAU,gBAL9B,eAAQ,CACPH,MAAO,CACLE,QAASS,UAGQ,W,iCCDrB,MAAMV,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,GAAQ,CAAC,YAAY,qBAE1E,U,kDCPT,SAAUA,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,OAAW,KAAM,CACzD,eAAoB,IAAK,CACvBnB,MAAO,eAAgB,CAAC,mBAAoBc,EAAKsB,SAAW,oBAAsB,uBACjF,eAAiBtB,EAAKuB,OAAQ,GACjC,eAAoB,IAAK,CACvBrC,MAAO,eAAgBc,EAAKsB,SAAW,gBAAkB,qBACxD,eAAiBtB,EAAKwB,OAAQ,IAChC,I,gECAgB,EAArB,qIAAwC,QAAnB,EAAU,gBAP9B,eAAQ,CACPd,MAAO,CACLa,MAAOE,OACPD,MAAOC,OACPH,SAAUI,YAGO,W,iCCHrB,MAAMf,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD,U,oDCPTd,EAAa,CAAEC,MAAO,yCACtBC,EAA0B,eAAiB,aAC3CC,EAAa,CAAC,OAAQ,cAEtB,SAAUW,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,IAAKpB,EAAY,CACzDE,EACA,eAAoB,IAAK,CACvBwC,KAAM3B,EAAK2B,KACXC,OAAQ,SACR1C,MAAO,4BACP,4BAAsBc,EAAK6B,OAAOA,OAAlC,iBACC,eAAiB7B,EAAK6B,OAAOC,QAAS,EAAG1C,K,4ECL3B,EAArB,6KACE,WACE+B,KAAKC,MAAM,cAAe,UAF9B,GAA0C,QAArB,EAAY,gBANhC,eAAQ,CACPV,MAAO,CACLmB,OAAQE,OACRJ,KAAMF,WAGW,W,iCCFrB,MAAMd,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD,U,oDCPTd,EAAa,CAAEC,MAAO,YACtBC,EAAa,CAAED,MAAO,OACtBE,EAA0B,eAAoB,IAAK,CAAEF,MAAO,oBAAsB,cAAe,GAEjG,SAAUa,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,MAAOpB,EAAY,CAC3D,eAAoB,MAAOE,EAAY,CACrCC,EACA,eAAoB,IAAK,KAAM,eAAiBY,EAAKgC,SAAU,O,gECFhD,EAArB,qIAA6C,QAAxB,EAAe,gBALnC,eAAQ,CACPtB,MAAO,CACLsB,QAASP,WAGQ,W,qBCHrB,MAAMd,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD,U,oCCPf,W,oDCEMd,EAAa,CAAEC,MAAO,oBAEtB,SAAUa,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,KAAMpB,EAAY,eAAiBe,EAAKiC,OAAQ,G,gECGvE,EAArB,qIAAyC,QAApB,EAAW,gBAL/B,eAAQ,CACPvB,MAAO,CACLuB,MAAOR,WAGU,W,qBCHrB,MAAMd,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD,U,kCCPf,W,2DCAA,W,yDCAA,SAASmC,EAAkBN,EAAQlB,GACjC,IAAK,IAAIyB,EAAI,EAAGA,EAAIzB,EAAM0B,OAAQD,IAAK,CACrC,IAAIE,EAAa3B,EAAMyB,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDT,OAAOU,eAAeb,EAAQS,EAAW9C,IAAK8C,IAInC,SAASK,EAAaC,EAAaC,EAAYC,GAG5D,OAFID,GAAYV,EAAkBS,EAAYG,UAAWF,GACrDC,GAAaX,EAAkBS,EAAaE,GACzCF,EAbT,mC,yDCEM1D,EAAa,CAAEC,MAAO,UACtBC,EAAa,CAAED,MAAO,OACtBE,EAAa,CAAEF,MAAO,OACtBG,EAAa,CAAEH,MAAO,OACtBI,EAAa,CAAEJ,MAAO,OAEtB,SAAUa,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAM0C,EAAqB,eAAkB,WACvCC,EAAyB,eAAkB,eAC3CC,EAAwB,eAAkB,cAC1CC,EAAuB,eAAkB,aACzCC,EAA0B,eAAkB,gBAC5CC,EAA0B,eAAkB,gBAC5CC,EAAwB,eAAkB,cAC1CC,EAA6B,eAAkB,mBAC/CC,EAAwB,eAAkB,cAEhD,OAAoC,GAA5BvD,EAAKwD,aAAapB,QACrB,iBAAc,eAAaW,EAAoB,CAAExD,IAAK,MACtD,iBAAc,eAAagE,EAAuB,CAAEhE,IAAK,GAAK,CAC7D,eAAgB,gBAAS,iBAAM,CAC7B,eAAayD,EAAwB,CACnCf,MAAOjC,EAAK6B,OAAOA,QAClB,KAAM,EAAG,CAAC,cAEftB,WAAY,gBAAS,iBAAM,CACzB,eAAa0C,EAAuB,CAClCrC,QAASZ,EAAKyD,cACdC,cAAezD,EAAO,KAAOA,EAAO,GAAK,SAACe,GAAD,OAAkBhB,EAAK2D,aAAa3C,MAC5E,KAAM,EAAG,CAAC,gBAEf4C,MAAO,gBAAS,iBAAM,CACpB,eAAaV,EAAsB,CACjCW,WAAY7D,EAAKwD,aACjBM,WAAY9D,EAAK8D,WACjBC,UAAW/D,EAAK+D,UAChBnD,QAASZ,EAAKY,QACdoD,UAAWhE,EAAK6B,OAAOoC,UACtB,KAAM,EAAG,CAAC,aAAc,aAAc,YAAa,UAAW,cACjE,eAAad,EAAyB,CACpCtB,OAAQ7B,EAAK6B,OACbF,KAAM3B,EAAKkE,aACV,KAAM,EAAG,CAAC,SAAU,aAEzB1D,aAAc,gBAAS,iBAAM,CAC3B,eAAa4C,EAAyB,CACpCnB,MAAOjC,EAAKQ,gBACX,KAAM,EAAG,CAAC,cAEfC,YAAa,gBAAS,iBAAM,CAC1B,eAAoB,MAAOxB,EAAY,CACrC,eAAaoE,EAAuB,CAClC9B,MAAO,4BACPC,MAAOxB,EAAKmE,cACZ7C,UAAU,GACT,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAOnC,EAAY,CACrC,eAAakE,EAAuB,CAClC9B,MAAO,iBACPC,MAAOxB,EAAKoE,aACX,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAOhF,EAAY,CACrC,eAAaiE,EAAuB,CAClC9B,MAAO,mBACPC,MAAOxB,EAAKqE,mBAAqB,KAChC,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAOhF,EAAY,CACrC,eAAagE,EAAuB,CAClC9B,MAAO,gBACPC,MAAOxB,EAAKsE,YACX,KAAM,EAAG,CAAC,YAEf,eAAoB,MAAOhF,EAAY,CACrC,eAAa+D,EAAuB,CAClC9B,MAAO,kBACPC,MAAOxB,EAAKuE,kBAAoB,KAC/B,KAAM,EAAG,CAAC,gBAGjB,mBAAoB,gBAAS,iBAAM,CACjC,eAAajB,EAA4B,CAAEtB,QAAShC,EAAKwE,WAAa,KAAM,EAAG,CAAC,gBAElFC,EAAG,K,0MC/DI,iBAAgB,CAC7BC,KAD6B,WAE3B,MAAO,CACLA,KAAM,GACNlB,aAAc,GACd3B,OAAQ,GACR8C,YAAa,IAAIC,KACjBT,cAAe,GACfC,YAAa,GACbC,mBAAoB,GACpBC,WAAY,GACZC,kBAAmB,GACnBC,UAAW,GACXf,cAAe,CAAC,EAAG,EAAG,GAAI,GAG1B7C,QAAS,IAAI,OACbkD,WAAY,CAAC,uBACbC,UAAW,CAAC,uDAGhBc,WAAY,CACVC,UAAA,KACAC,YAAA,KACAC,cAAA,KACAC,eAAA,KACAC,aAAA,KACAC,aAAA,KACAC,aAAA,KACAC,eAAA,KACAC,kBAAA,MAEFC,QAAS,CACPC,MADO,SACDC,GACJC,QAAQC,IAAI,QAASF,IAEvB9B,aAJO,SAIM9C,GACXM,KAAKyE,UAAU/E,IAEjB+E,UAPO,SAOGC,GAGR,GAAa,GAATA,EACF1E,KAAKqC,aAAerC,KAAKuD,SACpB,CACL,IAAIoB,EAAc,GAAKD,GAAV,EACb1E,KAAKqC,aAAerC,KAAKuD,KAAKqB,MAAMD,KAGxCtF,aAjBO,WAkBL,OAAO,eAAoBW,KAAKwD,cAElCT,UApBO,WAqBL,OAAO,eAAU/C,KAAKU,UAGpBmE,YAxDuB,WAwDZ,uKACTC,EAAQC,EAAA,KAAOC,aAAa3E,MAAM4E,KADzB,SAEG,eAAcH,GAFjB,OAEf,EAAKvB,KAFU,OAGf,EAAK7C,OAAS,eAAUoE,GACxB,EAAKzC,aAAe,EAAKkB,KAGzB,EAAK9D,QAAQyF,OAAOC,MAAMC,MAAMC,SAAW,SAACjF,GAC1C,OAAQkF,SAASlF,GAAS,KAAMmF,QAAQ,GAAK,MAIzCC,EAAgB,EAAKjC,KAAK,EAAKA,KAAKtC,OAAS,GACnD,EAAKuC,YAAc,eAAqBgC,EAASC,MACjD,EAAKzC,cAAgB,eAAiBwC,EAASE,mDAC/C,EAAKzC,YAAc,eACjB,eAAe,EAAKM,KAAM,EAAG,qDAAqD,IAEpF,EAAKL,mBAAqB,eACxB,EAAKK,KACL,EACA,qDACA,GAEF,EAAKJ,WAAa,eAChB,eAAe,EAAKI,KAAM,GAAI,qDAAqD,IAErF,EAAKH,kBAAoB,eACvB,EAAKG,KACL,GACA,qDACA,GAEF,EAAKF,UAAY,eAAa,EAAKE,MAjCpB,iD,qBC3EnB,MAAM/D,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD,gB,kDCLTd,EAAa,CAAEC,MAAO,wBAEtB,SAAUa,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,OAAQ,iBAAc,eAAoB,KAAMpB,EAAY,eAAiBe,EAAKiC,OAAQ,G,gECGvE,EAArB,qIAA0C,QAArB,EAAY,gBALhC,eAAQ,CACPvB,MAAO,CACLuB,MAAOR,WAGU,W,qBCHrB,MAAMd,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASZ,KAErD","file":"js/chunk-585f2f7f.ab9ab976.js","sourcesContent":["import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"row h-xxl-100\" }\nconst _hoisted_2 = { class: \"col-12 col-xxl-7 chart-wrapper px-sm-2 px-md-4 pb-2_5 h-100\" }\nconst _hoisted_3 = { class: \"row\" }\nconst _hoisted_4 = { class: \"col\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"row mt-2\"\n}\nconst _hoisted_6 = { class: \"col\" }\nconst _hoisted_7 = { class: \"row\" }\nconst _hoisted_8 = { class: \"col\" }\nconst _hoisted_9 = { class: \"col-12 col-xxl-5 px-sm-2 px-md-4 mt-0 mt-xxl-2_5 h-100 mb-2_5\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"row mt-2_5 mt-xxl-0\"\n}\nconst _hoisted_11 = { class: \"col\" }\nconst _hoisted_12 = {\n key: 1,\n class: \"row row-cols-2\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"metric-title\")\n ])\n ]),\n (_ctx.$slots.filterTabs)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"filterTabs\")\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _renderSlot(_ctx.$slots, \"chart\")\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n (_ctx.$slots.summaryTitle)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _renderSlot(_ctx.$slots, \"summaryTitle\")\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.metricStats)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _renderSlot(_ctx.$slots, \"metricStats\")\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"metric-highlight\")\n ])\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {},\r\n})\r\nexport default class MetricGrid extends Vue {}\r\n","import { render } from \"./MetricGrid.vue?vue&type=template&id=21d667ac&ts=true\"\nimport script from \"./MetricGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricGrid.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\n_pushScopeId(\"data-v-25184b14\")\nconst _hoisted_1 = { class: \"filter-bar\" }\nconst _hoisted_2 = [\"onClick\"]\n_popScopeId()\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (option) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n type: \"button\",\n key: option,\n onClick: _withModifiers(($event: any) => (_ctx.handleClick(option)), [\"prevent\"]),\n class: _normalizeClass([\"btn-tab\", { active: _ctx.active == option }])\n }, _toDisplayString(option === 0 ? \"Lifetime\" : (option === 1) ? \"1 Year\" : option + \" Years\"), 11, _hoisted_2))\n }), 128))\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n options: Array,\r\n },\r\n})\r\nexport default class FilterTabs extends Vue {\r\n active = 0;\r\n\r\n handleClick(option: number) {\r\n this.active = option;\r\n this.$emit(\"handleClick\", option);\r\n }\r\n}\r\n","import { render } from \"./FilterTabs.vue?vue&type=template&id=25184b14&scoped=true&ts=true\"\nimport script from \"./FilterTabs.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterTabs.vue?vue&type=script&lang=ts\"\n\nimport \"./FilterTabs.vue?vue&type=style&index=0&id=25184b14&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25184b14\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"p\", {\n class: _normalizeClass([\"text-body mb-0_5\", _ctx.featured ? 'text-type-5-bold ' : 'text-type-7-bold '])\n }, _toDisplayString(_ctx.label), 3),\n _createElementVNode(\"p\", {\n class: _normalizeClass(_ctx.featured ? 'display-title' : 'text-type-2-bold')\n }, _toDisplayString(_ctx.value), 3)\n ], 64))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n label: String,\r\n value: String,\r\n featured: Boolean,\r\n },\r\n})\r\nexport default class MetricStat extends Vue {}\r\n","import { render } from \"./MetricStat.vue?vue&type=template&id=47f6cf4a&ts=true\"\nimport script from \"./MetricStat.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricStat.vue?vue&type=script&lang=ts\"\n\nimport \"./MetricStat.vue?vue&type=style&index=0&id=47f6cf4a&lang=scss\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-type-7-bold text-right mb-0 mt-1\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" Source: \")\nconst _hoisted_3 = [\"href\", \"aria-label\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"p\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"a\", {\n href: _ctx.href,\n target: \"_blank\",\n class: \"metric-source text-type-7\",\n \"aria-label\": `Open ${_ctx.metric.metric} source data`\n }, _toDisplayString(_ctx.metric.source), 9, _hoisted_3)\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n metric: Object,\r\n href: String,\r\n },\r\n})\r\nexport default class MetricSource extends Vue {\r\n handleClick() {\r\n this.$emit(\"handleClick\", null);\r\n }\r\n}\r\n","import { render } from \"./MetricSource.vue?vue&type=template&id=618700b8&ts=true\"\nimport script from \"./MetricSource.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricSource.vue?vue&type=script&lang=ts\"\n\nimport \"./MetricSource.vue?vue&type=style&index=0&id=618700b8&lang=scss\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"row mt-2\" }\nconst _hoisted_2 = { class: \"col\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"text-type-3-bold\" }, \"Highlights\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.content), 1)\n ])\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n content: String,\r\n },\r\n})\r\nexport default class MetricHighlight extends Vue {\r\n title!: string;\r\n}\r\n","import { render } from \"./MetricHighlight.vue?vue&type=template&id=4d996ded&ts=true\"\nimport script from \"./MetricHighlight.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricHighlight.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MetricSource.vue?vue&type=style&index=0&id=618700b8&lang=scss\"","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-type-2-bold\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"h1\", _hoisted_1, _toDisplayString(_ctx.title), 1))\n}","\r\nimport { Options, Vue } from 'vue-class-component';\r\n\r\n@Options({\r\n props: {\r\n title: String\r\n }\r\n})\r\nexport default class MetricTitle extends Vue {\r\n title!: string\r\n}\r\n","import { render } from \"./MetricTitle.vue?vue&type=template&id=43161482&ts=true\"\nimport script from \"./MetricTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./MetricTitle.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./FilterTabs.vue?vue&type=style&index=0&id=25184b14&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MetricStat.vue?vue&type=style&index=0&id=47f6cf4a&lang=scss\"","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"col-12\" }\nconst _hoisted_2 = { class: \"col\" }\nconst _hoisted_3 = { class: \"col\" }\nconst _hoisted_4 = { class: \"col\" }\nconst _hoisted_5 = { class: \"col\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Spinner = _resolveComponent(\"Spinner\")!\n const _component_MetricTitle = _resolveComponent(\"MetricTitle\")!\n const _component_FilterTabs = _resolveComponent(\"FilterTabs\")!\n const _component_LineChart = _resolveComponent(\"LineChart\")!\n const _component_MetricSource = _resolveComponent(\"MetricSource\")!\n const _component_SectionTitle = _resolveComponent(\"SectionTitle\")!\n const _component_MetricStat = _resolveComponent(\"MetricStat\")!\n const _component_MetricHighlight = _resolveComponent(\"MetricHighlight\")!\n const _component_MetricGrid = _resolveComponent(\"MetricGrid\")!\n\n return (_ctx.selectedData.length == 0)\n ? (_openBlock(), _createBlock(_component_Spinner, { key: 0 }))\n : (_openBlock(), _createBlock(_component_MetricGrid, { key: 1 }, {\n \"metric-title\": _withCtx(() => [\n _createVNode(_component_MetricTitle, {\n title: _ctx.metric.metric\n }, null, 8, [\"title\"])\n ]),\n filterTabs: _withCtx(() => [\n _createVNode(_component_FilterTabs, {\n options: _ctx.filterOptions,\n onHandleClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.handleFilter($event)))\n }, null, 8, [\"options\"])\n ]),\n chart: _withCtx(() => [\n _createVNode(_component_LineChart, {\n metricData: _ctx.selectedData,\n dataLabels: _ctx.dataLabels,\n dataProps: _ctx.dataProps,\n options: _ctx.options,\n dateLabel: _ctx.metric.dateProp\n }, null, 8, [\"metricData\", \"dataLabels\", \"dataProps\", \"options\", \"dateLabel\"]),\n _createVNode(_component_MetricSource, {\n metric: _ctx.metric,\n href: _ctx.sourceUrl()\n }, null, 8, [\"metric\", \"href\"])\n ]),\n summaryTitle: _withCtx(() => [\n _createVNode(_component_SectionTitle, {\n title: _ctx.summaryTitle()\n }, null, 8, [\"title\"])\n ]),\n metricStats: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_MetricStat, {\n label: \"Michigan Building Permits\",\n value: _ctx.latestNumbers,\n featured: true\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_MetricStat, {\n label: \"Monthly Change\",\n value: _ctx.monthChange\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_MetricStat, {\n label: \"Monthly % Change\",\n value: _ctx.monthChangePercent + '%'\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_MetricStat, {\n label: \"Yearly Change\",\n value: _ctx.yearChange\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_MetricStat, {\n label: \"Yearly % Change\",\n value: _ctx.yearChangePercent + '%'\n }, null, 8, [\"value\"])\n ])\n ]),\n \"metric-highlight\": _withCtx(() => [\n _createVNode(_component_MetricHighlight, { content: _ctx.highlight }, null, 8, [\"content\"])\n ]),\n _: 1\n }))\n}","\r\nimport { defineComponent } from \"vue\";\r\nimport router from \"@/router\";\r\nimport {\r\n GetMetricData,\r\n GetMetric,\r\n SummaryTitleByMonth,\r\n NumberWithCommas,\r\n GetHighlight,\r\n ChangeOverTime,\r\n SourceURL,\r\n GetDateFromMonthYear,\r\n} from \"@/utils\";\r\nimport Spinner from \"@/components/Spinner.vue\";\r\nimport LineChart from \"@/components/Chart/LineChart.vue\";\r\nimport FilterTabs from \"@/components/Chart/FilterTabs.vue\";\r\nimport MetricTitle from \"@/components/MetricTitle.vue\";\r\nimport SectionTitle from \"@/components/SectionTitle.vue\";\r\nimport MetricGrid from \"@/components/MetricGrid.vue\";\r\nimport MetricStat from \"@/components/MetricStat.vue\";\r\nimport MetricSource from \"@/components/MetricSource.vue\";\r\nimport MetricHighlight from \"@/components/MetricHighlight.vue\";\r\nimport ChartOptions from \"@/types/chartOptions\";\r\n\r\nexport default defineComponent({\r\n data() {\r\n return {\r\n data: [],\r\n selectedData: [],\r\n metric: {},\r\n summaryDate: new Date(),\r\n latestNumbers: \"\",\r\n monthChange: \"\",\r\n monthChangePercent: \"\",\r\n yearChange: \"\",\r\n yearChangePercent: \"\",\r\n highlight: \"\",\r\n filterOptions: [1, 5, 10, 0],\r\n\r\n //Chart setup\r\n options: new ChartOptions(),\r\n dataLabels: [\"Annual Average Rate\"],\r\n dataProps: [\"michiganbuildingpermits_12monthmovingaverage_000s\"],\r\n };\r\n },\r\n components: {\r\n Spinner,\r\n LineChart,\r\n MetricTitle,\r\n SectionTitle,\r\n FilterTabs,\r\n MetricGrid,\r\n MetricStat,\r\n MetricSource,\r\n MetricHighlight,\r\n },\r\n methods: {\r\n debug(e: any) {\r\n console.log(\"debug\", e);\r\n },\r\n handleFilter(option: any) {\r\n this.limitData(option);\r\n },\r\n limitData(years: number) {\r\n /* This is going to be custom for each metric, you need to cin some cases \r\n convert the lable to a date. Then limit the date to the intended range */\r\n if (years == 0) {\r\n this.selectedData = this.data;\r\n } else {\r\n let count = -1 * (12 * years);\r\n this.selectedData = this.data.slice(count);\r\n }\r\n },\r\n summaryTitle() {\r\n return SummaryTitleByMonth(this.summaryDate);\r\n },\r\n sourceUrl() {\r\n return SourceURL(this.metric);\r\n },\r\n },\r\n async beforeMount() {\r\n const topic = router.currentRoute.value.name; // Get which metric by the route\r\n this.data = await GetMetricData(topic); // Get raw data from Socrata\r\n this.metric = GetMetric(topic); // Get metric configuration\r\n this.selectedData = this.data; // initialize this to \"lifetime\" and update this variable when a range is selected\r\n\r\n //Add custom chart options\r\n this.options.scales.yAxis.ticks.callback = (label: any) => {\r\n return (parseInt(label) / 1000).toFixed(1) + \" K\";\r\n };\r\n\r\n // Get summary data and hightlights\r\n const lastItem: any = this.data[this.data.length - 1];\r\n this.summaryDate = GetDateFromMonthYear(lastItem.date);\r\n this.latestNumbers = NumberWithCommas(lastItem.michiganbuildingpermits_12monthmovingaverage_000s);\r\n this.monthChange = NumberWithCommas(\r\n ChangeOverTime(this.data, 1, \"michiganbuildingpermits_12monthmovingaverage_000s\", false)\r\n );\r\n this.monthChangePercent = ChangeOverTime(\r\n this.data,\r\n 1,\r\n \"michiganbuildingpermits_12monthmovingaverage_000s\",\r\n true\r\n );\r\n this.yearChange = NumberWithCommas(\r\n ChangeOverTime(this.data, 12, \"michiganbuildingpermits_12monthmovingaverage_000s\", false)\r\n );\r\n this.yearChangePercent = ChangeOverTime(\r\n this.data,\r\n 12,\r\n \"michiganbuildingpermits_12monthmovingaverage_000s\",\r\n true\r\n );\r\n this.highlight = GetHighlight(this.data);\r\n },\r\n});\r\n","import { render } from \"./BuildingPermit.vue?vue&type=template&id=17b4ebf7&ts=true\"\nimport script from \"./BuildingPermit.vue?vue&type=script&lang=ts\"\nexport * from \"./BuildingPermit.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"section-title mb-1_5\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"h2\", _hoisted_1, _toDisplayString(_ctx.title), 1))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n props: {\r\n title: String,\r\n },\r\n})\r\nexport default class SectionTitle extends Vue {\r\n title!: string;\r\n}\r\n","import { render } from \"./SectionTitle.vue?vue&type=template&id=af6d4d54&ts=true\"\nimport script from \"./SectionTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionTitle.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}