{"version":3,"sources":["webpack://tg-solo401k//tmp/build_2bc71a77/app/javascript/channels|sync|/_channel\\.js$/","webpack://tg-solo401k//tmp/build_2bc71a77/app/javascript/controllers|sync|/_controller\\.js$/","webpack://tg-solo401k/./app/javascript/channels/index.js","webpack://tg-solo401k/./app/javascript/classes/tax_calc.js","webpack://tg-solo401k/./app/javascript/controllers/app_form_controller.js","webpack://tg-solo401k/./app/javascript/controllers/dropdown_controller.js","webpack://tg-solo401k/./app/javascript/controllers/flash_controller.js","webpack://tg-solo401k/./app/javascript/controllers/hello_controller.js","webpack://tg-solo401k/./app/javascript/controllers/mobile_menu_controller.js","webpack://tg-solo401k/./app/javascript/controllers/s401k_table_controller.js","webpack://tg-solo401k/./app/javascript/controllers/status_controller.js","webpack://tg-solo401k/./app/javascript/controllers/steps_controller.js","webpack://tg-solo401k/./app/javascript/controllers/tabs_controller.js","webpack://tg-solo401k/./app/javascript/controllers/uploader_controller.js","webpack://tg-solo401k/./app/javascript/custom.js","webpack://tg-solo401k/./app/javascript/controllers/index.js","webpack://tg-solo401k/./app/javascript/packs/application.js"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","map","webpackContext","webpackContextResolve","__webpack_require__","o","Object","channels","require","forEach","cb_rate","sscb_limit","sst_rate","mt_rate","amt_adj","amt_adj_couple","niit_adj","niit_adj_couple","cat_threshold","cat_threshold_couple","cat_div","cat_multi","cat_t1","std_ded_base","solo401k_s5","solo401k_s6","qbi_floor","qbi_roof","qbi_phase_range","fit_rates","fit_brackets","Infinity","fit_brackets_mc","cat_rates","cat_brackets","cat_brackets_mc","flt_rates","flt_brackets","flt_brackets_mc","gat_rates","gat_brackets","gat_brackets_mc","ga_net_worth_brackets","ga_net_worth_tax","hit_rates","hit_brackets","hit_brackets_mc","ilt_rates","ilt_brackets","ilt_brackets_mc","mat_rates","mat_brackets","mat_brackets_mc","mdt_rates","mdt_brackets","mdt_brackets_mc","md_exmp_brackets","md_exmp_amounts","md_exmp_amounts_mc","nvt_rates","nvt_brackets","nvt_brackets_mc","nct_rates","nct_brackets","nct_brackets_mc","njt_rates","njt_rates_mc","njt_brackets","njt_brackets_mc","nyt_rates","nyt_brackets","nyt_brackets_mc","nyt_amounts","nyct_rates","nyct_brackets","nyct_brackets_mc","ny_fran_brackets","ny_fran_amounts","ny_gross_amounts","pat_rates","pat_brackets","pat_brackets_mc","txt_rates","txt_brackets","txt_brackets_mc","vat_rates","vat_brackets","vat_brackets_mc","wat_rates","wat_brackets","wat_brackets_mc","state_ca_ded","state_fl_ded","state_ga_ded","state_ga_ded_mc","state_hi_ded","state_il_ded","state_ma_ded","state_md_ded","state_md_ded_mc","state_nc_ded","state_nj_ded","state_nv_ded","state_ny_ded","state_ny_ded_mc","state_pa_ded","state_tx_ded","state_va_ded","state_wa_ded","TaxCalc","calcSet","income","sei","seicb","set","Math","min","round","this","total_income","cal_base","se_tax","calcCorpSet","mmp","calcSchE","scenario","w2","p_tax","futa","_state","sum","state_tax","profit_sharing","calcNetWorthTax","corp_fee","abs","max","corp_income","fran_tax","calcProgressiveAmount","gen_tax","calcNyGenCorpTax","_mode","calcStats","sch_c","sch_e","k1","hse","adj","_amt_adj","_niit_adj","_cat_thd","_fit_brackets","_state_brackets","state_brackets","state_brackets_mc","std_ded","ow2","solo401k","agi","qb_income","getQbIncome","qbi","calcQbi","calcQbiA","taxable_income","fit","calcFit","amt","calcAmt","niit","calcNiit","state_income","cat","state_exmp","sdi","state_deduction","calcCatExmp","il_state_exmp","amounts","md_state_exmp","nc_state_exmp","nyt","calcNyIncomeTax","state_rates","calcCat","total_tax","contribution","amount_save","percent_save","other_tax","calcOtherTax","s1_total_tax","prev_total_tax","dis_income","res","qbi_comp","income_limit","qbi_after_red","income_b4_qbi","phase_percent","phase_total","tax","some","rate","index","bracket","prev_bracket","bracket_tax","amtcb","cb1","cb2","exmp","mental","net_worth_brackets","net_worth_tax","gat","amount","prev_amount","tax_a","tax_b","tax_c","tax_d","l_3","l_4","l_5","l_6","l_7","l_8","l_9","l_10","brackets","t1","c1","d1","value","eval","connect","currentPlanTarget","addEventListener","togglePlan","prevPlanTarget","checked","currentSectionTarget","classList","remove","prevSectionTarget","detailTargets","targ","setAttribute","time","section","noPlanTarget","disabled","enter","other_checked","leave","toggleOwnership","target","otherAffCheckTarget","otherAffiliationDetailTarget","toggle","otherAffiliationTarget","toggleAffiliationDetail","toggleSponsor","otherSponsorTarget","Controller","targets","toggleMenu","menuTarget","contains","hideMenu","event","buttonTarget","close","bodyTarget","element","textContent","mm_button","document","getElementById","onclick","preventDefault","overlayTarget","is_open","mode","state","taxCalc","hide_optional","optionalStates","modeTarget","innerHTML","updateTotalIncome","stateSelTarget","stateLabelTarget","toUpperCase","includes","toggleOptionalDetail","btnUpdateTarget","totalInputTarget","chart","Chart","chartTarget","type","data","labels","datasets","label","backgroundColor","borderColor","borderWidth","options","scales","y","beginAtZero","toggleDetail","savingsTarget","scrollIntoView","behavior","detailNyTarget","add","optionalDetailTargets","parseFloat","txtTotalIncomeTarget","numberWithCommas","txtW2Target","txtK1Target","s3_adj_mp","labelW2Target","s3_adj","s1_stats","s2_stats","s3_stats","s4_sche","s4_stats","s5_sche","s5_stats","s6_sche","s6_stats","updateStats","sum1","sum1Target","sum2","sum2Target","sum3","sum3Target","sum4","sum4Target","sum5","sum5Target","i","v","Number","EPSILON","push","update","x","toString","replace","stats","tippy","triggerTarget","content","descTarget","allowHTML","get","scrollTo","offsetWidth","triggerTargets","ele","idx","activateTab","dataset","name","contentTargets","fileTarget","files","size","alert","fpickers","pathname","window","location","querySelectorAll","pickers","length","picker","fp","flatpickr","allowInput","altInput","altFormat","dateFormat","year_pickers","vid","videojs","destroy","dispose","application","Application","context","load","definitionsFromContext","Rails","ActiveStorage","global","LocalTime"],"mappings":"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","file":"js/application-fbfa52400e82b09f44f8.js","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 463;\nmodule.exports = webpackEmptyContext;","var map = {\n\t\"./app_form_controller.js\": 500,\n\t\"./dropdown_controller.js\": 826,\n\t\"./flash_controller.js\": 62,\n\t\"./hello_controller.js\": 155,\n\t\"./mobile_menu_controller.js\": 49,\n\t\"./s401k_table_controller.js\": 544,\n\t\"./status_controller.js\": 659,\n\t\"./steps_controller.js\": 296,\n\t\"./tabs_controller.js\": 105,\n\t\"./uploader_controller.js\": 87,\n\t\"controllers/app_form_controller.js\": 500,\n\t\"controllers/dropdown_controller.js\": 826,\n\t\"controllers/flash_controller.js\": 62,\n\t\"controllers/hello_controller.js\": 155,\n\t\"controllers/mobile_menu_controller.js\": 49,\n\t\"controllers/s401k_table_controller.js\": 544,\n\t\"controllers/status_controller.js\": 659,\n\t\"controllers/steps_controller.js\": 296,\n\t\"controllers/tabs_controller.js\": 105,\n\t\"controllers/uploader_controller.js\": 87\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 74;","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","// constants\nconst cb_rate = 0.9235;\nconst sscb_limit = 137700.00;\nconst sst_rate = 0.124;\nconst mt_rate = 0.029;\nconst amt_adj = 200000;\nconst amt_adj_couple = 250000;\nconst niit_adj = 200000;\nconst niit_adj_couple = 250000;\nconst cat_threshold = 203341;\nconst cat_threshold_couple = 406687;\nconst cat_div = 2500;\nconst cat_multi = 6;\nconst cat_t1 = 124;\nconst std_ded_base = 12400.00;\nconst solo401k_s5 = 19500;\nconst solo401k_s6 = 26000;\nconst qbi_floor = 163300;\nconst qbi_roof = 213300;\nconst qbi_phase_range = 50000;\n\n// fit\nconst fit_rates = [10, 12, 22, 24, 32, 35, 37];\nconst fit_brackets = [9875, 40125, 85525, 163300, 207350, 518400, Infinity];\nconst fit_brackets_mc = [19750, 80250, 171050, 326600, 414700, 622050, Infinity];\n\n// california\nconst cat_rates = [1.0, 2.0, 4.0, 6.0, 8.0, 9.3, 10.3, 11.3, 12.3];\nconst cat_brackets = [8932, 21175, 33421, 46394, 58634, 299508, 359407, 599012, Infinity];\nconst cat_brackets_mc = [17864, 42350, 66842, 92788, 117268, 599016, 718814, 1198024, Infinity];\n\n// florida\nconst flt_rates = [];\nconst flt_brackets = [];\nconst flt_brackets_mc = [];\n\n// georgia\nconst gat_rates = [1.0, 2.0, 3.0, 4.0, 5.0, 5.75];\nconst gat_brackets = [750, 2250, 3750, 5250, 7000, Infinity];\nconst gat_brackets_mc = [1000, 3000, 5000, 7000, 10000, Infinity];\nconst ga_net_worth_brackets = [100000, 150000, 200000, 300000, 500000, 750000, 1000000, 2000000, 4000000, 6000000, 8000000, 10000000, 12000000, 14000000, 16000000, 18000000, 20000000, 22000000, Infinity];\nconst ga_net_worth_tax =[125, 150, 200, 250, 300, 500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 5000];\n\n// hawaii\nconst hit_rates = [1.4, 3.2, 5.5, 6.4, 6.8, 7.2, 7.6, 7.9, 8.25, 9.0, 10.0, 11.0];\nconst hit_brackets = [2400, 4800, 9600, 14400, 19200, 24000, 36000, 48000, 150000, 175000, 200000, Infinity];\nconst hit_brackets_mc = [4800, 9600, 19200, 28800, 38400, 48000, 72000, 96000, 300000, 350000, 400000, Infinity];\n\n// illinois\nconst ilt_rates = [4.95];\nconst ilt_brackets = [Infinity];\nconst ilt_brackets_mc = [Infinity];\n\n// massachusetts\nconst mat_rates = [1.0, 2.0, 4.0, 6.0, 8.0, 9.3, 10.3, 11.3, 12.3];\nconst mat_brackets = [8932, 21175, 33421, 46394, 58634, 299508, 359407, 599012, Infinity];\nconst mat_brackets_mc = [17864, 42350, 66842, 92788, 117268, 599016, 718814, 1198024, Infinity];\n\n// maryland\nconst mdt_rates = [2.0, 3.0, 4.0, 4.75, 5.00, 5.25, 5.50, 5.75];\nconst mdt_brackets = [1000, 2000, 3000, 100000, 125000, 150000, 250000, Infinity];\nconst mdt_brackets_mc = [1000, 2000, 3000, 150000, 175000, 225000, 300000, Infinity];\nconst md_exmp_brackets = [100000, 125000, 150000, 175000, 200000, Infinity];\nconst md_exmp_amounts = [3200, 1600, 800, 0, 0, 0];\nconst md_exmp_amounts_mc = [3200, 3200, 3200, 1600, 800, 0];\n\n// nevada\nconst nvt_rates = [];\nconst nvt_brackets = [];\nconst nvt_brackets_mc = [];\n\n// north carolina\nconst nct_rates = [5.25];\nconst nct_brackets = [Infinity];\nconst nct_brackets_mc = [Infinity];\n\n// new jersey\nconst njt_rates = [1.4, 1.75, 3.5, 5.525, 6.37, 8.97, 10.75];\nconst njt_rates_mc = [1.4, 1.75, 2.45, 3.5, 5.525, 6.37, 8.97, 10.75];\nconst njt_brackets = [20000, 35000, 40000, 75000, 500000, 1000000, Infinity];\nconst njt_brackets_mc = [20000, 50000, 70000, 80000, 150000, 500000, 1000000, Infinity];\n\n// new york\nconst nyt_rates = [4.0, 4.5, 5.25, 5.9, 6.09, 6.41, 6.85, 8.82];\nconst nyt_brackets = [8500, 11700, 13900, 21400, 80650, 215400, 1077550, Infinity];\nconst nyt_brackets_mc = [17150, 23600, 27900, 43000, 161550, 323200, 2155350, Infinity];\nconst nyt_amounts = [0, 340, 484, 600, 1042, 4650, 13288, 72345];\nconst nyct_rates = [3.078, 3.762, 3.819, 3.876];\nconst nyct_brackets = [12000, 25000, 50000, Infinity];\nconst nyct_brackets_mc = [21600, 45000, 90000, Infinity];\nconst ny_fran_brackets = [100000, 250000, 500000, 1000000, 5000000, 25000000];\nconst ny_fran_amounts = [25, 50, 175, 300, 1000, 3000, 4500];\nconst ny_gross_amounts = [25, 75, 175, 500, 1500, 3500, 5000];\n\n// pennsylvania\nconst pat_rates = [3.07];\nconst pat_brackets = [Infinity];\nconst pat_brackets_mc = [Infinity];\n\n// texas\nconst txt_rates = [];\nconst txt_brackets = [];\nconst txt_brackets_mc = [];\n\n// virginia\nconst vat_rates = [2.0, 3.0, 5.0, 5.75];\nconst vat_brackets = [3000, 5000, 17000, Infinity];\nconst vat_brackets_mc = [3000, 5000, 17000, Infinity];\n\n// washington\nconst wat_rates = [];\nconst wat_brackets = [];\nconst wat_brackets_mc = [];\n\n// state deduction\nconst state_ca_ded = 4601.00;\nconst state_fl_ded = 0.00;\nconst state_ga_ded = 7300.00;\nconst state_ga_ded_mc = 13400.00;\nconst state_hi_ded = 3344.00;\nconst state_il_ded = 0.00;\nconst state_ma_ded = 6400.00;\nconst state_md_ded = 2300.00;\nconst state_md_ded_mc = 5850.00;\nconst state_nc_ded = 10750.00;\nconst state_nj_ded = 1000.00;\nconst state_nv_ded = 0.00;\nconst state_ny_ded = 8000.00;\nconst state_ny_ded_mc = 16050.00;\nconst state_pa_ded = 0.00;\nconst state_tx_ded = 0.00;\nconst state_va_ded = 5430.00;\nconst state_wa_ded = 0.00;\n\nexport default class TaxCalc {\n\n //mode;\n\n // constructor(mode) {\n // this.mode = mode;\n // }\n\n set mode(value) {\n this._mode = value;\n this.mmp = (this._mode === 'single') ? 1 : 2;\n }\n\n set state(value) {\n this._state = value;\n\n // set state deduction and special cases\n switch (value) {\n case 'ga':\n if (this._mode === 'single') this.state_deduction = state_ga_ded;\n else this.state_deduction = state_ga_ded_mc;\n this.state_rates = gat_rates;\n break;\n case 'il':\n this.state_deduction = state_il_ded;\n this.state_rates = ilt_rates;\n break;\n case 'md':\n if (this._mode === 'single') this.state_deduction = state_md_ded;\n else this.state_deduction = state_md_ded_mc;\n this.state_rates = mdt_rates;\n break;\n case 'nj':\n this.state_deduction = state_nj_ded;\n this.state_rates = (this._mode === 'single') ? njt_rates : njt_rates_mc;\n break;\n case 'ny':\n this.state_deduction = (this._mode === 'single') ? state_ny_ded : state_ny_ded_mc;\n this.state_rates = nyt_rates;\n break;\n default:\n this.state_deduction = eval('state_' + value + '_ded');\n this.state_rates = eval(value + 't_rates');\n }\n\n // set state rates and brackets\n this.state_brackets = eval(value + 't_brackets');\n this.state_brackets_mc = eval(value + 't_brackets_mc');\n //console.log(this.state_deduction)\n }\n\n calcSet(income) {\n let sei = income;\n let seicb = sei * cb_rate;\n let sscb = Math.min(seicb, sscb_limit);\n let sst = sscb * sst_rate;\n let mcb = seicb;\n let mt = seicb * mt_rate;\n let set = sst + mt;\n //let hse = set / 2;\n\n set = Math.round(set)\n // console.log('set: '+set)\n\n // store results\n this.total_income = sei;\n this.cal_base = seicb;\n this.se_tax = set;\n\n return set\n }\n\n calcCorpSet(income) {\n let sei = income;\n let seicb = sei;\n let sscb = Math.min(seicb, sscb_limit * this.mmp);\n let sst = sscb * sst_rate;\n let mcb = seicb;\n let mt = seicb * mt_rate;\n let set = sst + mt;\n\n set = Math.round(set);\n\n // store results\n //this.total_income = sei;\n this.cal_base = seicb;\n this.se_tax = set;\n\n //return set\n }\n\n calcSchE(scenario, income, w2) {\n //let mmp = (this.mode === 'single') ? 1 : 2;\n\n //let p_tax = Math.round(-w2 * (7.65 / 100));\n let p_tax = -Math.round(this.se_tax / 2);\n let futa = 0.0;\n\n // calc futa\n switch (this._state) {\n case 'ga':\n futa = -(299 * this.mmp);\n break;\n case 'hi':\n futa = -Math.round( (42 * this.mmp) + (Math.min(w2, 48100 * this.mmp) * 0.024) + (Math.min(w2, 48100 * this.mmp) * 0.0001) );\n break;\n case 'il':\n futa = -(440 * this.mmp);\n break;\n case 'md':\n futa = -(263 * this.mmp);\n break;\n case 'nc':\n futa = -Math.round((42 * this.mmp) + (Math.min(w2, 25200 * this.mmp) * 0.01));\n break;\n case 'nj':\n futa = -Math.round((42 * this.mmp) + (Math.min(w2, 35300 * this.mmp) * 0.026825) + (Math.min(w2, 35300 * this.mmp) * 0.005) + (Math.min(w2, 35300 * this.mmp) * 0.001175));\n break;\n case 'ny':\n futa = -(518 * this.mmp);\n break;\n case 'pa':\n // (7000*0.6%*1)-(10000*3.689%*1) = 411\n futa = -(411 * this.mmp);\n break;\n case 'va':\n futa = -(243 * this.mmp);\n break;\n case 'tx':\n case 'nv':\n case 'wa':\n case 'fl':\n // no futa\n break;\n case 'ca':\n default:\n futa = -287 * this.mmp;\n }\n // console.log('futa '+futa)\n\n let sum = income + (-w2) + p_tax + futa;\n //let res_sum = Math.round(sum * 0.015);\n\n // console.log('ptax '+p_tax)\n // console.log('sum '+sum)\n\n let state_tax = 0.00;\n let profit_sharing = 0.00;\n\n // get profit sharing/defined benefit\n switch (scenario) {\n case 4:\n break;\n case 5:\n // 57000 - 19500(solo401k) = 37500\n profit_sharing = -Math.round(Math.min((w2 * 0.25), (37500.00 * this.mmp)));\n break;\n case 6:\n profit_sharing = -Math.min(w2, (230000 * this.mmp));\n break;\n }\n\n // get state tax\n switch (this._state) {\n case 'ga':\n // net worth tax\n state_tax = -this.calcNetWorthTax(sum + profit_sharing, ga_net_worth_brackets, ga_net_worth_tax);\n // 9500*2.7% = 257\n this.corp_fee = Math.abs(state_tax) + (257 * this.mmp);\n break;\n case 'hi':\n // no state tax\n this.corp_fee = Math.round(Math.min(Math.abs(w2), 48100 * this.mmp) * 0.024 + Math.min(Math.abs(w2), 48100 * this.mmp) * 0.0001);\n break;\n case 'pa':\n // no state tax\n // (10000*3.689%*1) = 368.9\n this.corp_fee = 369 * this.mmp;\n break;\n case 'il':\n state_tax = -Math.round((sum + profit_sharing) * 0.015);\n // (12740*3.125%*1) = 398\n this.corp_fee = Math.abs(state_tax) + (398 * this.mmp);\n break;\n case 'md':\n // no state tax\n this.corp_fee = 221 * this.mmp;\n break;\n case 'nc':\n state_tax = -Math.max(200, ( 200 + Math.round(((sum + profit_sharing) - 1000000) / 1500 )));\n this.corp_fee = Math.abs(state_tax) + ( Math.min(25200 * this.mmp, w2) * 0.01 );\n break;\n case 'nj':\n // no state tax\n this.corp_fee = Math.round(Math.min(w2, 35300 * this.mmp) * 0.026825 + Math.min(w2, 35300 * this.mmp) * 0.005 + Math.min(w2, 35300 * this.mmp) * 0.001175);\n break;\n case 'ny':\n let corp_income = sum + profit_sharing;\n let fran_tax = this.calcProgressiveAmount(corp_income, ny_fran_brackets, ny_fran_amounts);\n // console.log('fran: '+fran_tax)\n let gen_tax = this.calcNyGenCorpTax(corp_income, income, w2);\n // console.log('gen_corp: '+gen_tax)\n state_tax = -(fran_tax + gen_tax);\n this.corp_fee = fran_tax + (476 * this.mmp) + gen_tax;\n break;\n case 'va':\n // no state tax\n this.corp_fee = (this._mode === 'single') ? 257 : 402;\n break;\n case 'tx':\n case 'nv':\n case 'wa':\n case 'fl':\n // no state tax, corp fee, etc\n this.corp_fee = 0.00;\n break;\n case 'ca':\n default:\n switch (scenario) {\n case 4:\n state_tax = -Math.max(Math.round(sum * 0.015), 800);\n break;\n case 5:\n case 6:\n state_tax = -Math.max(Math.round((sum + profit_sharing) * 0.015), 800);\n break;\n }\n\n this.corp_fee = Math.abs(state_tax) + (245 * this.mmp);\n }\n // console.log('pf '+profit_sharing)\n // console.log('st '+state_tax)\n\n this.profit_sharing = profit_sharing;\n // 7000*3.4%*1+7000*0.1%*1 = 245\n\n let sche = income + (-w2) + p_tax + futa + state_tax + profit_sharing;\n // console.log('sche: '+sche)\n return sche\n }\n\n calcStats(scenario, w2, sch_c, sch_e, k1, hse, adj) {\n // multiplier for single or married\n //let mmp = (this.mode === 'single') ? 1 : 2;\n let _amt_adj = amt_adj;\n let _niit_adj = niit_adj;\n let _cat_thd = cat_threshold;\n let _fit_brackets = fit_brackets;\n let _state_brackets = this.state_brackets;\n if (this._mode === 'single') {\n\n } else {\n //mmp = 2;\n _amt_adj = amt_adj_couple;\n _niit_adj = niit_adj_couple;\n _cat_thd = cat_threshold_couple;\n _fit_brackets = fit_brackets_mc;\n _state_brackets = this.state_brackets_mc;\n }\n\n let std_ded = std_ded_base * this.mmp;\n\n //let hse = this.se_tax / 2;\n let ow2 = w2;\n let solo401k = 0;\n if (scenario >= 5) {\n solo401k = (scenario === 5) ? solo401k_s5 : solo401k_s6;\n solo401k *= this.mmp;\n w2 = w2 - solo401k;\n }\n\n let agi = (w2 + sch_c + sch_e + k1 + (-hse) + (-adj));\n\n let qb_income = this.getQbIncome(scenario, sch_c, hse, sch_e, adj);\n\n let qbi = 0.00;\n if ((agi - std_ded) <= (qbi_floor * this.mmp)) {\n // console.log('sce'+scenario+' qbi income: '+qb_income)\n qbi = this.calcQbi(qb_income, agi, std_ded);\n } else {\n // console.log('sce'+scenario+' qbiA income: '+qb_income)\n qbi = this.calcQbiA(qb_income, agi, std_ded);\n }\n\n let se_tax = this.se_tax;\n if (scenario < 4) se_tax *= this.mmp;\n\n let taxable_income = agi - std_ded - qbi;\n if (taxable_income < 0) taxable_income = 0;\n\n //let cat_income = agi - (this.state_deduction * this.mmp);\n let fit = this.calcFit(taxable_income, _fit_brackets);\n let amt = this.calcAmt(scenario, this.cal_base, _amt_adj);\n let niit = this.calcNiit(scenario, k1, agi, _niit_adj);\n\n // get state income tax\n let state_income = 0.0;\n let cat = 0.0;\n // get state exemption\n let state_exmp = 0.0;\n\n // sdi\n let sdi = 0.0;\n\n switch (this._state) {\n case 'ga':\n state_income = agi - this.state_deduction;\n break;\n case 'hi':\n if (scenario > 3 && this._mode === 'single') state_exmp = this.calcCatExmp(agi, _cat_thd, cat_t1 * this.mmp);\n sdi = Math.min((ow2 * 0.005), (11.03 * this.mmp));\n state_income = agi - (this.state_deduction * this.mmp);\n break;\n case 'il':\n let il_state_exmp = (agi <= 250000) ? 2325 * this.mmp : 0;\n if (scenario < 4 && this._mode === 'couple') state_income = sch_c - il_state_exmp;\n else state_income = agi - il_state_exmp;\n break;\n case 'md':\n let amounts = (this._mode === 'single') ? md_exmp_amounts : md_exmp_amounts_mc;\n let md_state_exmp = this.calcProgressiveAmount(agi, md_exmp_brackets, amounts) * this.mmp;\n state_income = agi - this.state_deduction - md_state_exmp;\n break;\n case 'nc':\n if (this._mode === 'single') {\n state_income = agi - this.state_deduction;\n } else {\n let income = (scenario > 3) ? agi : sch_c;\n let nc_state_exmp = (income <= 250000) ? 4650 : 0;\n state_income = income - (this.state_deduction * this.mmp) - nc_state_exmp;\n }\n break;\n case 'nj':\n let income = (scenario > 3) ? agi : sch_c;\n state_income = income - (this.state_deduction * this.mmp)\n sdi = Math.round(Math.min(w2, 35300) * 0.003825 + Math.min(w2, 134900) * 0.0026 + Math.min(w2, 35300) * 0.000425 + Math.min(w2, 134900) * 0.0016);\n break;\n case 'ny':\n state_income = agi - this.state_deduction;\n break;\n case 'pa':\n sdi = ow2 * 0.0006;\n if (scenario > 3) state_income = w2 + sch_e;\n else state_income = sch_c;\n break;\n case 'va':\n state_exmp = 259;\n state_income = agi - (this.state_deduction * this.mmp);\n break;\n case 'tx':\n case 'nv':\n case 'wa':\n case 'fl':\n // no state tax, corp fee, etc\n state_exmp = 0.00;\n state_income = 0.00;\n break;\n case 'ca':\n default:\n // defaults to ca\n state_exmp = this.calcCatExmp(agi, _cat_thd, cat_t1 * this.mmp);\n sdi = Math.min((ow2 * 0.01), (1229.09 * this.mmp));\n state_income = agi - (this.state_deduction * this.mmp);\n }\n // console.log('sdi: '+sdi)\n // console.log('agi: '+agi)\n // console.log('state_ded: '+this.state_deduction)\n // console.log('state_exmp: '+state_exmp)\n // console.log('state_income: '+state_income)\n\n let nyt = 0.0;\n if (this._state === 'ny') {\n cat = this.calcNyIncomeTax(agi, state_income);\n this.state_rates = nyct_rates;\n nyt = this.calcCat(state_income, 0, nyct_brackets);\n this.state_rates = nyt_rates;\n } else {\n cat = this.calcCat(state_income, state_exmp, _state_brackets);\n }\n\n let total_tax = 0.00;\n let contribution = 0.00;\n let amount_save = 0.00;\n let percent_save = 0.00;\n let other_tax = 0.00;\n let corp_fee = 0.00;\n\n switch (scenario) {\n case 6:\n contribution = this.profit_sharing - solo401k;\n other_tax = this.calcOtherTax(sdi);\n corp_fee = this.corp_fee;\n total_tax = Math.round(se_tax + fit + amt + niit + cat + nyt + other_tax + corp_fee);\n amount_save = total_tax - this.s1_total_tax;\n percent_save = Math.round((Math.abs(amount_save) / this.s1_total_tax) * 100);\n break;\n case 5:\n contribution = this.profit_sharing - solo401k;\n other_tax = this.calcOtherTax(sdi);\n corp_fee = this.corp_fee;\n total_tax = Math.round(se_tax + fit + amt + niit + cat + nyt + other_tax + corp_fee);\n amount_save = total_tax - this.s1_total_tax;\n percent_save = Math.round((Math.abs(amount_save) / this.s1_total_tax) * 100);\n break;\n case 4:\n other_tax = this.calcOtherTax(sdi);\n corp_fee = this.corp_fee;\n total_tax = Math.round(se_tax + fit + amt + niit + cat + nyt + other_tax + corp_fee);\n amount_save = total_tax - this.s1_total_tax;\n percent_save = Math.round((Math.abs(amount_save) / this.s1_total_tax) * 100);\n break;\n case 2:\n case 3:\n contribution = -adj;\n total_tax = Math.round(se_tax + fit + amt + niit + cat + nyt);\n amount_save = total_tax - this.s1_total_tax;\n percent_save = Math.round((Math.abs(amount_save) / this.s1_total_tax) * 100);\n break;\n case 1:\n default:\n total_tax = Math.round(se_tax + fit + amt + niit + cat + nyt);\n this.s1_total_tax = total_tax;\n }\n\n // update saved total tax\n this.prev_total_tax = total_tax;\n\n let dis_income = (this.total_income * this.mmp) - total_tax + contribution;\n\n return {\n se_tax: se_tax,\n agi: agi,\n qbi: qbi,\n taxable_income: taxable_income,\n fit: fit,\n amt: amt,\n niit: niit,\n cat: cat,\n nyt: nyt,\n other_tax: other_tax,\n corp_fee: corp_fee,\n total_tax: total_tax,\n contribution: contribution,\n dis_income: dis_income,\n amount_save: amount_save,\n percent_save: percent_save\n }\n }\n\n getQbIncome(scenario, sch_c, hse, sch_e, adj) {\n let res = 0.00;\n\n switch (scenario) {\n case 4:\n case 5:\n case 6:\n res = sch_e;\n break;\n case 3:\n res = sch_c - hse - adj;\n break;\n case 1:\n case 2:\n default:\n res = sch_c - hse;\n }\n\n return res\n }\n\n calcQbi(income, agi, std_ded) {\n let qbi_comp = income * (20/100);\n let income_limit = (agi - std_ded) * (20/100);\n let qbi = Math.min(qbi_comp, income_limit);\n return Math.round(qbi)\n }\n\n calcQbiA(income, agi, std_ded) {\n let qbi_comp = income * (20/100);\n\n // calc part III\n let qbi_after_red = 0.00;\n let income_b4_qbi = agi - std_ded;\n // console.log('income '+income)\n // console.log('income b4 qbi '+income_b4_qbi)\n if (income_b4_qbi > qbi_floor && income_b4_qbi < qbi_roof) {\n let p3_22 = income_b4_qbi - qbi_floor;\n let phase_percent = p3_22 / qbi_phase_range;\n let phase_total = Math.round(qbi_comp * phase_percent);\n qbi_after_red = Math.round(qbi_comp - phase_total);\n // console.log('p3_22 '+p3_22)\n // console.log('phase_percent '+phase_percent)\n // console.log('phase_total '+phase_total)\n // console.log('qbi after_red '+qbi_after_red)\n }\n\n let income_limit = (agi - std_ded) * (20/100);\n let qbi = Math.min(qbi_after_red, income_limit);\n return Math.round(qbi)\n }\n\n calcFit(income, _fit_brackets) {\n let tax = 0.00;\n fit_rates.some((rate, index)=>{\n let bracket = _fit_brackets[index];\n let prev_bracket = (index === 0) ? 0 : _fit_brackets[index - 1];\n let bracket_tax = 0.00;\n //console.log(income)\n\n if (income > bracket) {\n bracket_tax = Math.round((bracket - prev_bracket) * (rate / 100));\n tax += bracket_tax;\n // console.log(prev_bracket);\n // console.log(bracket_tax);\n } else {\n bracket_tax = Math.round(Math.max(0, (income - prev_bracket)) * (rate / 100));\n tax += bracket_tax;\n // console.log('-')\n // console.log(prev_bracket);\n // console.log(bracket_tax);\n // console.log('-')\n return true\n }\n })\n\n return tax\n }\n\n calcAmt(scenario, income, adj) {\n if (scenario < 4) {\n income *= this.mmp;\n }\n\n let amtcb = income - adj;\n let amt = 0.00;\n if (amtcb > 0) {\n amt = Math.round(amtcb * (0.9 / 100));\n }\n\n return amt\n }\n\n calcNiit(scenario, k1, agi, niit_adj) {\n let cb1 = k1;\n let cb2 = agi - niit_adj;\n let niit = 0.00;\n if (cb1 > 0 && cb2 > 0) {\n niit = Math.round(Math.min(cb1, cb2) * (3.8 / 100));\n }\n return niit\n }\n\n calcCat(state_income, exmp, _state_brackets) {\n let cat = 0.00;\n\n this.state_rates.some((rate, index)=>{\n let bracket = _state_brackets[index];\n let prev_bracket = (index === 0) ? 0 : _state_brackets[index - 1];\n let bracket_tax = 0.00;\n\n if (state_income > bracket) {\n bracket_tax = Math.round((bracket - prev_bracket) * (rate / 100));\n cat += bracket_tax;\n // console.log(prev_bracket);\n // console.log(bracket_tax);\n } else {\n bracket_tax = Math.round(Math.max(0, (state_income - prev_bracket)) * (rate / 100));\n cat += bracket_tax;\n // console.log(rate)\n // console.log(prev_bracket);\n // console.log(bracket_tax);\n return true\n }\n })\n\n if (this._state === 'ca') {\n let mental = (state_income > 1000000) ? Math.round((state_income - 1000000) * 0.01) : 0;\n cat += mental;\n }\n\n // console.log(state_income)\n // console.log(cat)\n // console.log(exmp)\n cat -= exmp;\n\n return cat\n }\n\n calcNetWorthTax(corp_income, net_worth_brackets, net_worth_tax) {\n let gat = 0.00;\n\n net_worth_tax.some((amount, index)=>{\n let bracket = net_worth_brackets[index];\n let prev_amount = (index === 0) ? 0 : net_worth_tax[index - 1];\n\n if (corp_income > bracket) {\n // = continue in some()\n return false\n } else {\n gat = prev_amount;\n // console.log(gat)\n // console.log(prev_bracket);\n // console.log(bracket_tax);\n // = break in some()\n return true\n }\n })\n\n return gat\n }\n\n calcNyGenCorpTax(sum, income, w2) {\n let tax_a = sum * 0.0885;\n let tax_b = (sum / 2) * 0.0015;\n let tax_c = (((sum + w2) - 40000) * 0.15) * 0.0885;\n let tax_d = this.calcProgressiveAmount(income, ny_fran_brackets, ny_gross_amounts);\n\n let res = Math.round(Math.max(tax_a, tax_b, tax_c, tax_d));\n if (res > 1000) res = Math.round(res * 1.25);\n return res\n }\n\n calcNyIncomeTax(agi, taxable_income) {\n let res = 0.00;\n let l_3, l_4, l_5, l_6, l_7, l_8, l_9, l_10;\n\n // console.log('agi: '+agi)\n // console.log('tax_income: '+taxable_income)\n\n switch (true) {\n case agi > 1077550:\n // chart e\n // console.log('chart e')\n l_3 = taxable_income * 0.0882;\n if (agi > 1127550) {\n res = Math.round(l_3);\n } else {\n l_4 = this.calcCat(taxable_income, 0, nyt_brackets);\n l_5 = Math.max(l_3 - l_4, 0);\n l_6 = (taxable_income <= 215400) ? 519 : 1467;\n l_7 = Math.max(l_5 - l_6, 0);\n l_8 = agi - 1077550;\n l_9 = l_8 / 50000;\n l_10 = Math.round(l_7 * l_9);\n res = Math.round(l_4 + l_6 + l_10);\n // console.log('l3: '+l_3)\n // console.log('l4: '+l_4)\n // console.log('l5: '+l_5)\n // console.log('l6: '+l_6)\n // console.log('l7: '+l_7)\n // console.log('l8: '+l_8)\n // console.log('l9: '+l_9)\n // console.log('l10: '+l_10)\n }\n break;\n case agi > 215400 && taxable_income > 215400:\n // chart d\n // console.log('chart d')\n l_3 = taxable_income * 0.0685;\n if (agi > 265400) {\n res = Math.round(l_3);\n } else {\n l_4 = this.calcCat(taxable_income, 0, nyt_brackets);\n l_5 = Math.max(l_3 - l_4, 0);\n l_6 = 519;\n l_7 = Math.max(l_5 - l_6, 0);\n l_8 = agi - 215400;\n l_9 = l_8 / 50000;\n l_10 = Math.round(l_7 * l_9);\n res = Math.round(l_4 + l_6 + l_10);\n // console.log('l3: '+l_3)\n // console.log('l4: '+l_4)\n // console.log('l5: '+l_5)\n // console.log('l6: '+l_6)\n // console.log('l7: '+l_7)\n // console.log('l8: '+l_8)\n // console.log('l9: '+l_9)\n // console.log('l10: '+l_10)\n }\n break;\n case agi > 107650 && taxable_income <= 215400:\n // chart c\n // console.log('chart c')\n l_3 = taxable_income * 0.0641;\n if (agi > 157650) {\n res = Math.round(l_3);\n } else {\n l_4 = this.calcCat(taxable_income, 0, nyt_brackets);\n l_5 = Math.max(l_3 - l_4, 0);\n l_6 = agi - 107650;\n l_7 = l_6 / 50000;\n l_8 = Math.round(l_5 * l_7);\n res = Math.round(l_4 + l_8);\n // console.log('l4: '+l_4)\n // console.log('l5: '+l_5)\n // console.log('l6: '+l_6)\n // console.log('l7: '+l_7)\n // console.log('l8: '+l_8)\n }\n break;\n case agi < 107650:\n default:\n // chart f\n // console.log('chart f')\n res = this.calcCat(taxable_income, 0, nyt_brackets);\n }\n // console.log('res: '+res)\n\n return res\n }\n\n calcProgressiveAmount(income, brackets, amounts) {\n let res = 0.00;\n\n amounts.some((amount, index)=>{\n let bracket = brackets[index];\n\n if (income > bracket) {\n // = continue in some()\n return false\n } else {\n res = amount;\n // console.log(res)\n // = break in some()\n return true\n }\n })\n\n return res\n }\n\n calcCatExmp(agi, cat_threshold, t1) {\n let c1 = Math.max((agi - cat_threshold), 0);\n let d1 = Math.round(Math.round(c1 / cat_div) * cat_multi);\n //let t1 = 124;\n //let exmp = t1 - d1;\n let exmp = Math.max(0, t1 - d1);\n // console.log(c1)\n // console.log(d1)\n // console.log(exmp)\n return exmp\n }\n\n calcOtherTax(sdi) {\n let futa = 0.00;\n\n switch (this._state) {\n case 'tx':\n case 'nv':\n case 'wa':\n case 'fl':\n // no futa\n break;\n case 'ca':\n default:\n futa = 42.00 * this.mmp;\n }\n\n //let sdi = Math.min((income * 0.01), (1229.09 * this.mmp));\n let res = Math.round(futa + sdi);\n return res\n }\n}","import { enter, leave, toggle } from 'el-transition'\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'noPlan', 'currentPlan', 'prevPlan', 'detail',\n 'currentSection', 'prevSection',\n 'otherAffiliation', 'otherAffiliationDetail', 'otherSponsor', 'otherAffCheck'\n ]\n\n connect() {\n this.currentPlanTarget.addEventListener('change', ()=>{ this.togglePlan('current'); })\n this.prevPlanTarget.addEventListener('change', ()=>{ this.togglePlan('prev'); })\n\n if (this.currentPlanTarget.checked) this.currentSectionTarget.classList.remove('hidden');\n if (this.prevPlanTarget.checked) this.prevSectionTarget.classList.remove('hidden');\n\n this.detailTargets.forEach((targ) => {\n targ.setAttribute('data-transition-enter', 'transition ease-out duration-100');\n targ.setAttribute('data-transition-enter-start', 'transform opacity-0 scale-95');\n targ.setAttribute('data-transition-enter-end', 'transform opacity-100 scale-100');\n targ.setAttribute('data-transition-leave', 'transition ease-in duration-75');\n targ.setAttribute('data-transition-leave-start', 'transform opacity-100 scale-100');\n targ.setAttribute('data-transition-leave-end', 'transform opacity-0 scale-95');\n })\n }\n\n togglePlan(time) {\n let name = time + 'PlanTarget';\n let section = time + 'SectionTarget';\n let target = this[name];\n let checked = target.checked;\n if (checked) {\n // disable no plan option\n this.noPlanTarget.checked = false;\n this.noPlanTarget.disabled = true;\n\n enter(this[section]);\n } else {\n // un-disable if both unchecked\n let other = (time === 'current') ? 'prev' : 'current';\n let other_checked = this[other+'PlanTarget'].checked;\n if (!checked && !other_checked) {\n this.noPlanTarget.disabled = false;\n }\n\n leave(this[section])\n }\n }\n\n toggleOwnership(e) {\n //console.log(e.target.value)\n if (e.target.value === 'false') {\n this.otherAffCheckTarget.checked = true;\n leave(this.otherAffiliationDetailTarget);\n }\n toggle(this.otherAffiliationTarget);\n }\n\n toggleAffiliationDetail(e) {\n toggle(this.otherAffiliationDetailTarget);\n }\n\n toggleSponsor(e) {\n toggle(this.otherSponsorTarget);\n }\n}\n","import { enter, leave, toggle } from 'el-transition'\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'menu', 'button' ]\n\n connect() {\n\n }\n\n toggleMenu() {\n if (this.menuTarget.classList.contains('hidden')) {\n enter(this.menuTarget);\n } else {\n leave(this.menuTarget);\n }\n }\n\n hideMenu(event) {\n const buttonClicked = this.buttonTarget.contains(event.target)\n\n if (!buttonClicked) {\n leave(this.menuTarget)\n }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'body', 'button' ]\n\n //connect() {}\n\n close() {\n this.bodyTarget.remove();\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.textContent = \"Hello World!\"\n }\n}\n","import { enter, leave, toggle } from 'el-transition'\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'button', 'menu', 'overlay' ]\n\n connect() {\n this.mm_button = document.getElementById('mobile_menu_button');\n this.mm_button.onclick = (e) => {\n e.preventDefault();\n enter(this.menuTarget);\n enter(this.overlayTarget);\n }\n }\n\n toggleMenu() {\n if (this.menuTarget.classList.contains('hidden')) {\n enter(this.menuTarget);\n enter(this.overlayTarget);\n } else {\n leave(this.menuTarget);\n leave(this.overlayTarget);\n }\n }\n}\n","import { enter, leave } from 'el-transition'\nimport { Controller } from \"stimulus\"\nimport Chart from 'chart.js/auto'\n\nimport TaxCalc from \"../classes/tax_calc\";\n\nexport default class extends Controller {\n static targets = [\n 'mode', 'stateSel', 'stateLabel', 'detailNy',\n 'detail', 'optionalDetail', 'savings', 'chart', 'btnUpdate', 'totalInput',\n 'txtTotalIncome', 'txtW2', 'txtK1', 'labelW2',\n 'sceSet', 'sceFit', 'sceAmt', 'sceNiit', 'sceCat', 'sceNyt', 'sceOther', 'sceCorp', 'sceTotalTop', 'sceTotal', 'sceCont', 'sceDis', 'sceAmountSave', 'scePercentSave',\n 'sum1', 'sum2', 'sum3', 'sum4', 'sum5'\n // 's1Set', 's1Fit', 's1Amt', 's1Niit', 's1Cat', 's1Other', 's1Corp', 's1Total', 's1Cont', 's1Dis', 's1AmountSave', 's1PercentSave',\n // 's2Set', 's2Fit', 's2Amt', 's2Niit', 's2Cat', 's2Other', 's2Corp', 's2Total', 's2Cont', 's2Dis', 's2AmountSave', 's2PercentSave',\n // 's3Set', 's3Fit', 's3Amt', 's3Niit', 's3Cat', 's3Other', 's3Corp', 's2Total', 's2Cont', 's2Dis', 's2AmountSave', 's2PercentSave',\n // 's4Set', 's4Fit', 's4Amt', 's4Niit', 's4Cat', 's4Other', 's4Corp', 's2Total', 's2Cont', 's2Dis', 's2AmountSave', 's2PercentSave',\n // 's5Set', 's5Fit', 's5Amt', 's5Niit', 's5Cat', 's5Other', 's5Corp', 's2Total', 's2Cont', 's2Dis', 's2AmountSave', 's2PercentSave',\n // 's6Set', 's6Fit', 's6Amt', 's6Niit', 's6Cat', 's6Other', 's6Corp', 's2Total', 's2Cont', 's2Dis', 's2AmountSave', 's2PercentSave'\n ]\n\n connect() {\n //console.log(this.detailTargets.length)\n //console.log(this.btnUpdateTarget)\n this.is_open = false;\n this.mode = 'single';\n this.state = 'ca';\n this.taxCalc = new TaxCalc();\n this.taxCalc.mode = this.mode;\n this.taxCalc.state = this.state;\n this.hide_optional = false;\n this.optionalStates = ['tx', 'wa', 'nv', 'fl'];\n\n // bind mode toggle\n this.modeTarget.addEventListener('click', ()=>{\n if (this.mode === 'single') {\n this.mode = 'couple'\n this.modeTarget.innerHTML = 'Married Couple';\n } else {\n this.mode = 'single'\n this.modeTarget.innerHTML = 'Single';\n }\n\n this.taxCalc.mode = this.mode;\n this.taxCalc.state = this.state;\n this.updateTotalIncome();\n });\n\n // bind state select\n this.stateSelTarget.addEventListener('change', ()=>{\n this.state = this.stateSelTarget.value;\n this.taxCalc.state = this.state;\n this.updateTotalIncome();\n this.stateLabelTarget.innerHTML = this.state.toUpperCase();\n\n this.hide_optional = this.optionalStates.includes(this.state);\n this.toggleOptionalDetail();\n });\n\n // bind update button\n this.btnUpdateTarget.addEventListener('click', ()=>{this.updateTotalIncome()})\n this.totalInputTarget.addEventListener('change', ()=>{this.updateTotalIncome()})\n\n // bind animation for details\n this.detailTargets.forEach((targ) => {\n targ.setAttribute('data-transition-enter', 'transition ease-out duration-100');\n targ.setAttribute('data-transition-enter-start', 'transform opacity-0 scale-95');\n targ.setAttribute('data-transition-enter-end', 'transform opacity-100 scale-100');\n targ.setAttribute('data-transition-leave', 'transition ease-in duration-75');\n targ.setAttribute('data-transition-leave-start', 'transform opacity-100 scale-100');\n targ.setAttribute('data-transition-leave-end', 'transform opacity-0 scale-95');\n })\n\n // bind chart\n this.chart = new Chart(this.chartTarget, {\n type: 'bar',\n data: {\n labels: ['Scenario 1', 'Scenario 2', 'Scenario 3', 'Scenario 4', 'Scenario 5', 'Scenario 6'],\n datasets: [{\n label: 'Savings ($1,000)',\n data: [0, 1.71, 7.82, 6.21, 17.1, 31.36],\n backgroundColor: [\n 'rgba(255, 99, 132, 0.2)',\n 'rgba(255, 206, 86, 0.2)',\n 'rgba(255, 159, 64, 0.2)',\n 'rgba(153, 102, 255, 0.2)',\n 'rgba(54, 162, 235, 0.2)',\n 'rgba(75, 192, 192, 0.2)'\n ],\n borderColor: [\n 'rgba(255, 99, 132, 1)',\n 'rgba(255, 206, 86, 1)',\n 'rgba(255, 159, 64, 1)',\n 'rgba(153, 102, 255, 1)',\n 'rgba(54, 162, 235, 1)',\n 'rgba(75, 192, 192, 1)'\n ],\n borderWidth: 1\n }]\n },\n options: {\n scales: {\n y: {\n beginAtZero: true\n }\n }\n }\n });\n }\n\n toggleDetail(e) {\n e.preventDefault();\n this.is_open = !this.is_open;\n\n this.detailTargets.forEach((targ) => {\n if (targ.classList.contains('hidden')) {\n //targ.classList.remove('hidden');\n enter(targ);\n } else {\n //targ.classList.add('hidden');\n leave(targ);\n }\n })\n\n this.toggleOptionalDetail();\n\n this.savingsTarget.scrollIntoView({behavior: 'smooth'});\n\n // hide nyc when necessary\n if (this.state === 'ny' && !this.is_open) this.detailNyTarget.classList.add('hidden');\n\n // hide optional details when necessary\n // if (this.optionalStates.includes(this.state)) {\n // this.optionalDetailTargets.forEach((targ)=>{\n // targ.classList.add('hidden');\n // })\n // } else {\n // this.optionalDetailTargets.forEach((targ)=>{\n // targ.classList.remove('hidden');\n // })\n // }\n }\n\n toggleOptionalDetail() {\n this.optionalDetailTargets.forEach((targ) => {\n if (this.is_open && !this.hide_optional) {\n //targ.classList.remove('hidden');\n //console.log(targ.dataset.optional !== 'true')\n enter(targ);\n } else {\n //targ.classList.add('hidden');\n leave(targ);\n }\n })\n }\n\n updateTotalIncome() {\n //console.log(this.totalInputTarget.value)\n let income = Math.round(parseFloat(this.totalInputTarget.value));\n this.totalInputTarget.value = 'Updating...';\n\n let w2 = Math.round(income * 0.4);\n let k1 = income - w2;\n this.txtTotalIncomeTarget.innerHTML = '$' + this.numberWithCommas(income);\n this.txtW2Target.innerHTML = '$' + this.numberWithCommas(w2);\n this.txtK1Target.innerHTML = '$' + this.numberWithCommas(k1);\n\n // calculate self employed tax (SET)\n let set = 0.00;\n let hse = 0.00;\n let s3_adj_mp = 1;\n let mmp = 1;\n if (this.mode === 'single') {\n set = this.taxCalc.calcSet(income);\n hse = set / 2;\n\n // update w2 label\n this.labelW2Target.innerHTML = 'W2';\n } else {\n // set as split between the couple\n set = this.taxCalc.calcSet(income / 2);\n hse = set;\n s3_adj_mp = 2;\n mmp = 2;\n\n // update w2 label\n this.labelW2Target.innerHTML = 'W2 x 2';\n }\n //let set = this.taxCalc.calcSet(income);\n //let hse = set / 2;\n //let s3_adj = Math.round((income - hse) * 0.2);\n let s3_adj = Math.min(Math.round((income - hse) * 0.2), 57000.00 * s3_adj_mp);\n\n // store and display SET\n //this.net_income = income;\n //this.set = Math.round(set);\n // this.seTaxTargets.forEach((ele)=>{\n // ele.innerHTML = '$' + this.numberWithCommas(this.set);\n // });\n\n // ###### scenario 1 ######\n // get stats for scenarios\n let s1_stats = this.taxCalc.calcStats(1, 0, income, 0, 0, hse, 0);\n let s2_stats = this.taxCalc.calcStats(2, 0, income, 0, 0, hse, 6000 * mmp);\n let s3_stats = this.taxCalc.calcStats(3, 0, income, 0, 0, hse, s3_adj);\n\n // ###### corp scenario ######\n this.taxCalc.calcCorpSet(w2);\n let s4_sche = this.taxCalc.calcSchE(4, income, w2);\n let s4_stats = this.taxCalc.calcStats(4, w2, 0, s4_sche, 0, 0, 0);\n let s5_sche = this.taxCalc.calcSchE(5, income, w2);\n let s5_stats = this.taxCalc.calcStats(5, w2, 0, s5_sche, 0, 0, 0);\n let s6_sche = this.taxCalc.calcSchE(6, income, w2);\n let s6_stats = this.taxCalc.calcStats(6, w2, 0, s6_sche, 0, 0, 0);\n // console.log(s5_sche)\n // console.log(s5_stats)\n\n this.updateStats(0, s1_stats);\n this.updateStats(1, s2_stats);\n this.updateStats(2, s3_stats);\n this.updateStats(3, s4_stats);\n this.updateStats(4, s5_stats);\n this.updateStats(5, s6_stats);\n\n // update sum numbers\n let sum1 = s4_stats.total_tax - s1_stats.total_tax;\n this.sum1Target.innerHTML = '$' + this.numberWithCommas(sum1);\n\n let sum2 = s5_stats.total_tax - s4_stats.total_tax;\n this.sum2Target.innerHTML = '$' + this.numberWithCommas(sum2);\n\n let sum3 = s6_stats.total_tax - s4_stats.total_tax;\n this.sum3Target.innerHTML = '$' + this.numberWithCommas(sum3);\n\n let sum4 = Math.round((sum2 / s5_stats.contribution) * 10000);\n this.sum4Target.innerHTML = '$' + this.numberWithCommas(sum4);\n\n let sum5 = Math.round((sum3 / s6_stats.contribution) * 10000);\n this.sum5Target.innerHTML = '$' + this.numberWithCommas(sum5);\n\n // update chart\n let data = [];\n for (let i=1; i<=6; i++) {\n let v = Math.abs(eval('s'+i+'_stats').amount_save) / 1000;\n v = Math.round( v * 100 + Number.EPSILON ) / 100;\n //console.log(v)\n data.push(v);\n }\n //console.log(data)\n this.chart.data.datasets[0].data = data;\n this.chart.update();\n\n this.totalInputTarget.value = income;\n\n // show hide nyc when necessary\n if (this.state === 'ny' && this.is_open) this.detailNyTarget.classList.remove('hidden');\n else this.detailNyTarget.classList.add('hidden');\n }\n\n numberWithCommas(x) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n }\n\n updateStats(scenario, stats) {\n this['sceSetTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.se_tax);\n this['sceFitTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.fit);\n this['sceAmtTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.amt);\n this['sceNiitTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.niit);\n this['sceCatTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.cat);\n this['sceNytTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.nyt);\n this['sceOtherTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.other_tax);\n this['sceCorpTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.corp_fee);\n\n this['sceTotalTopTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.total_tax);\n this['sceTotalTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.total_tax);\n\n // this['sceTotalTargets'][scenario].forEach((ele)=>{\n // ele.innerHTML = '$' + this.numberWithCommas(stats.total_tax);\n // })\n\n this['sceContTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.contribution);\n this['sceDisTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.dis_income);\n this['sceAmountSaveTargets'][scenario].innerHTML = '$' + this.numberWithCommas(stats.amount_save);\n this['scePercentSaveTargets'][scenario].innerHTML = this.numberWithCommas(stats.percent_save) + '%';\n }\n}\n","import tippy from 'tippy.js';\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'trigger', 'desc' ]\n\n connect() {\n tippy(this.triggerTarget, {\n content: this.descTarget.innerHTML,\n allowHTML: true\n });\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n let step = this.data.get('current');\n\n if (step > 3) {\n this.element.scrollTo(this.element.offsetWidth, 0)\n }\n\n // let targ = document.getElementById('nav_step_'+step);\n // if (targ) {\n // targ.scrollIntoView({behavior: 'smooth'});\n // }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'trigger', 'content' ]\n\n connect() {\n this.triggerTargets.forEach((ele, idx)=>{\n //ele.preventDefault();\n //console.log(ele)\n ele.addEventListener('click', (e)=>{\n e.preventDefault();\n //console.log(e.target.dataset.target)\n //console.log(this.contentTargets[idx])\n //e.target.classList.add('active')\n this.activateTab(e.target.dataset.target);\n });\n });\n }\n\n activateTab(name) {\n this.triggerTargets.forEach((ele)=>{\n if (ele.dataset.target === name) {\n ele.classList.add('active');\n } else {\n ele.classList.remove('active');\n }\n });\n\n this.contentTargets.forEach((targ)=>{\n if (targ.id === name) {\n targ.classList.remove('hidden');\n } else {\n targ.classList.add('hidden');\n }\n })\n //this.contentTargets[idx].classList.remove('hidden');\n }\n}\n","import tippy from 'tippy.js';\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'file' ]\n\n connect() {\n this.fileTarget.addEventListener('change', (e)=>{\n const size_in_megabytes = e.target.files[0].size/1024/1024;\n if (size_in_megabytes > 5) {\n alert(\"Maximum file size is 5MB. Please choose a smaller file.\");\n e.target.value = \"\";\n }\n });\n }\n}\n","const fpickers = [];\n\ndocument.addEventListener('turbo:load', function(){\n // page load actions here\n // get current URL path and assign 'active' class\n let pathname = window.location.pathname;\n let nav = document.querySelectorAll(\"a[href='\"+ pathname +\"']\");\n nav.forEach(e => {\n e.classList.add('active');\n });\n\n // flatpicker\n const pickers = document.querySelectorAll('.datepicker');\n if (pickers.length > 0) {\n pickers.forEach((picker)=>{\n const fp = flatpickr(picker, {\n allowInput: true,\n altInput: true,\n altFormat: \"F j, Y\",\n dateFormat: \"Y-m-d\"\n });\n fpickers.push(fp);\n });\n }\n\n const year_pickers = document.querySelectorAll('.yearpicker');\n if (year_pickers.length > 0) {\n year_pickers.forEach((picker)=>{\n const fp = flatpickr(picker, {\n allowInput: true,\n altInput: true,\n altFormat: \"Y\",\n dateFormat: \"Y-m-d\"\n });\n fpickers.push(fp);\n });\n }\n\n // video-js\n let videos = document.querySelectorAll('.v-js');\n videos.forEach((vid)=>{\n let video = videojs(vid)\n });\n});\n\ndocument.addEventListener(\"turbo:before-cache\", function() {\n // clean up elements here\n fpickers.forEach((fp)=>{\n fp.destroy();\n });\n\n let videos = document.querySelectorAll('.v-js');\n videos.forEach((vid)=>{\n let video = videojs(vid)\n video.dispose();\n });\n});","// Load all the controllers within this directory and all subdirectories. \n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from \"@rails/ujs\"\nimport \"@hotwired/turbo-rails\"\nimport * as ActiveStorage from \"@rails/activestorage\"\nimport \"channels\"\n\nRails.start()\nActiveStorage.start()\n\n// el-transition for page element animation\nrequire('el-transition')\n\n// Stimulus\nimport \"controllers\"\n\n// Flatpickr\nrequire(\"flatpickr\")\n\n// chart.js\nrequire('chart.js')\n\n// video.js\n//require(\"video.js\")\nimport videojs from 'video.js';\nglobal.videojs = videojs;\n\n// local-time\nimport LocalTime from \"local-time\"\nLocalTime.start();\n\n// import stylesheets\nimport '../stylesheets/application.scss'\n\n// custom js code goes here\nrequire('../custom.js')\n"],"sourceRoot":""}