Compare commits

..
43 changed files with 6418 additions and 10583 deletions

No files matched your search

-1
View File
@@ -1 +0,0 @@
16
+1 -2
View File
@@ -18,8 +18,7 @@ export default class AddExpenseItemComponent extends Component {
currencies = [
{ code: 'EUR' },
{ code: 'USD' },
{ code: 'BTC' }
{ code: 'USD' }
];
get isValidAmount () {
+26 -38
View File
@@ -5,9 +5,7 @@ import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { A } from '@ember/array';
import { scheduleOnce } from '@ember/runloop';
import { btcToSats, satsToBtc } from 'kredits-web/utils/btc-conversions';
import isValidAmount from 'kredits-web/utils/is-valid-amount';
import isoDateIsToday from 'kredits-web/utils/iso-date-is-today';
import readFileContent from 'kredits-web/utils/read-file-content';
import config from 'kredits-web/config/environment';
@@ -29,10 +27,6 @@ export default class AddReimbursementComponent extends Component {
this.exchangeRates.fetchRates();
}
get contributorId () {
return this.recipientId || this.kredits.currentUser?.id;
}
get isValidTotal () {
return isValidAmount(this.total);
}
@@ -75,6 +69,22 @@ export default class AddReimbursementComponent extends Component {
anchor.scrollIntoView();
}
updateTotalAmountFromFiat() {
let btcAmount = parseFloat(this.total);
if (this.exchangeRates.btceur > 0 && this.totalEUR > 0) {
btcAmount += (this.totalEUR / this.exchangeRates.btceur);
}
if (this.exchangeRates.btcusd > 0 && this.totalUSD > 0) {
btcAmount += (this.totalUSD / this.exchangeRates.btcusd);
}
if (this.totalUSD === 0 && this.totalEUR === 0) {
btcAmount = 0;
}
this.total = btcAmount.toFixed(8);
}
// TODO use ember-concurrency here
// https://github.com/67P/kredits-web/pull/209#discussion_r1064234421
@action
@@ -94,7 +104,7 @@ export default class AddReimbursementComponent extends Component {
@action
updateContributor (event) {
this.recipientId = parseInt(event.target.value);
this.recipientId = event.target.value;
}
@action
@@ -104,38 +114,16 @@ export default class AddReimbursementComponent extends Component {
}
@action
async addExpenseItem (expense) {
let totalBTC = parseFloat(this.total);
if (expense.currency === "BTC") {
expense.amountSats = btcToSats(expense.amount);
totalBTC += expense.amount;
} else {
let amountSats;
if (isoDateIsToday(expense.date)) {
amountSats = btcToSats(expense.amount / this.exchangeRates[expense.currency]);
} else {
const rates = await this.exchangeRates.fetchHistoricRates(expense.date);
amountSats = btcToSats(expense.amount / rates[expense.currency]);
}
expense.amountSats = amountSats;
totalBTC += satsToBtc(amountSats);
}
console.debug("Adding expense:", expense);
this.total = totalBTC.toFixed(8);
this.expenses.pushObject(expense);
addExpenseItem (expenseItem) {
this.expenses.pushObject(expenseItem);
this.updateTotalAmountFromFiat();
this.expenseFormVisible = false;
}
@action
async removeExpenseItem (expense) {
let totalBTC = parseFloat(this.total);
let amountBTC = satsToBtc(expense.amountSats);
totalBTC = totalBTC - amountBTC;
this.total = totalBTC.toFixed(8);
this.expenses.removeObject(expense);
removeExpenseItem (expenseItem) {
this.expenses.removeObject(expenseItem);
this.updateTotalAmountFromFiat();
if (this.expenses.length === 0) {
this.expenseFormVisible = true;
@@ -148,12 +136,12 @@ export default class AddReimbursementComponent extends Component {
if (!this.kredits.currentUser) { window.alert('You need to connect your RSK account first.'); return false }
if (!this.kredits.currentUserIsCore) { window.alert('Only core contributors can submit reimbursements.'); return false }
const contributor = this.contributors.findBy('id', this.contributorId);
const contributor = this.contributors.findBy('id', parseInt(this.recipientId));
const attributes = {
amount: btcToSats(this.total),
amount: parseInt(parseFloat(this.total) * 100000000), // convert to sats
token: config.tokens['BTC'],
recipientId: this.contributorId,
recipientId: parseInt(this.recipientId),
title: `Expenses covered by ${contributor.name}`,
description: this.description,
url: this.url,
@@ -2,7 +2,8 @@
<label>
<p class="label">Contributor:</p>
<p>
<select id="contributor" required {{on "change" this.updateContributor}}>
<select required {{on "change" this.updateContributor}}>
<option value="" selected disabled hidden></option>
{{#each this.contributors as |contributor|}}
<option value={{contributor.id}} selected={{eq this.contributorId contributor.id}}>{{contributor.name}}</option>
{{/each}}
@@ -14,7 +15,6 @@
<p class="label">Total amount (BTC):</p>
<p>
<Input @type="text"
@name="total-btc"
@placeholder="0.0015"
@value={{this.total}}
@required={{true}}
@@ -50,9 +50,7 @@
<p class="actions">
<button {{on "click" this.showExpenseForm}}
id="add-another-item" class="green small" type="button">
+ Add another item
</button>
class="green small" type="button">+ Add another item</button>
</p>
{{else}}
<p>No line items yet.</p>
+2 -4
View File
@@ -1,5 +1,3 @@
{{#if this.isConfirmed}}
Confirmed at block <strong>{{@confirmedAtBlock}}</strong> (~ {{this.confirmedInHumanTime}} ago)
{{else}}
{{#unless this.isConfirmed}}
Confirming in <strong>{{this.confirmedInBlocks}}</strong> blocks (~ {{this.confirmedInHumanTime}})
{{/if}}
{{/unless}}
+13 -38
View File
@@ -1,43 +1,18 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
export default class ContributorComponent extends Component {
@service router;
export default Component.extend({
tagName: '',
@tracked selectedContributorId = null;
@tracked showToplistOnly = true;
router: service(),
selectedContributorId: null,
actions: {
openContributorDetails(contributor) {
this.router.transitionTo('dashboard.contributors.show', contributor);
}
get contributorList () {
return this.args.contributorList;
}
get contributorTop10 () {
return this.contributorList ?
this.contributorList.slice(0, 10) : [];
}
get contributors () {
return this.showToplistOnly ?
this.contributorTop10 : this.contributorList;
}
get hiddenContributorsAmount () {
return this.contributorList.length - 10;
}
get showAllButtonText () {
return `Show ${this.hiddenContributorsAmount} more contributors`;
}
@action
openContributorDetails (contributor) {
this.router.transitionTo('dashboard.contributors.show', contributor);
}
@action
showAllContributors () {
this.showToplistOnly = false;
}
}
});
+1 -8
View File
@@ -2,7 +2,7 @@
<thead>
</thead>
<tbody>
{{#each this.contributors as |c|}}
{{#each @contributorList as |c|}}
<tr role="button"
onclick={{action "openContributorDetails" c.contributor}}
class="{{if (is-current-user c.contributor) "current-user"}} {{if (eq c.contributor.id @selectedContributorId) "selected"}}">
@@ -21,12 +21,5 @@
</td>
</tr>
{{/each}}
{{#if this.showToplistOnly}}
<tr role="button" onclick={{action "showAllContributors"}}>
<td colspan="2">
{{this.showAllButtonText}}
</td>
</tr>
{{/if}}
</tbody>
</table>
+1 -1
View File
@@ -5,7 +5,7 @@
<span class="date">{{fmt-date-localized expense.date}}:</span>
<span class="title">{{expense.title}}</span>
</h4>
<div class="amount" title="{{fmt-amount-sats-title expense.amountSats}}">
<div class="amount">
{{fmt-fiat-currency expense.amount expense.currency}}
</div>
<p class="description">
@@ -1,20 +1,10 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import config from 'kredits-web/config/environment';
import fmtDateLocalized from 'kredits-web/helpers/fmt-date-localized';
export default class ReimbursementItemComponent extends Component {
@service kredits;
@tracked showExpenseDetails = false;
constructor(owner, args) {
super(owner, args);
if (this.isUnconfirmed && !this.isVetoed) {
this.showExpenseDetails = true;
}
}
get ipfsGatewayUrl () {
return config.ipfs.gatewayUrl;
@@ -28,37 +18,10 @@ export default class ReimbursementItemComponent extends Component {
return !this.isConfirmed;
}
get isVetoed () {
return this.args.reimbursement.vetoed;
}
get showVetoButton () {
return this.isUnconfirmed && this.kredits.currentUserIsCore;
}
get showConfirmedIn () {
return !this.isVetoed &&
(this.showExpenseDetails || this.isUnconfirmed);
}
get expenses () {
return this.args.reimbursement.expenses;
}
get expensesDateRange () {
const dates = this.expenses.map(e => e.date).uniq().sort();
let out = fmtDateLocalized.compute(dates.firstObject)
if (dates.length > 1) {
out += ' - ' + fmtDateLocalized.compute(dates.lastObject)
}
return out;
}
@action
toggleExpenseDetails () {
this.showExpenseDetails = !this.showExpenseDetails;
}
@action
veto (id) {
this.kredits.vetoReimbursement(id).then(transaction => {
@@ -1,7 +1,6 @@
<li data-reimbursement-id={{@reimbursement.id}}
class="{{item-status @reimbursement}}">
<p class="meta cursor-pointer" role="button"
{{on "click" this.toggleExpenseDetails}}>
<p class="meta">
<span class="recipient">
<UserAvatar @contributor={{@reimbursement.contributor}} />
</span>
@@ -14,17 +13,11 @@
{{sats-to-btc @reimbursement.amount}}</span>&#8239;<span class="symbol">BTC</span>
</p>
{{#if this.showExpenseDetails}}
<ExpenseList @expenses={{@reimbursement.expenses}} />
{{/if}}
<div class="meta">
<p>
{{#if this.showConfirmedIn}}
<p class="confirmation-eta">
<ConfirmedIn @confirmedAtBlock={{@reimbursement.confirmedAt}} />
{{else}}
{{#unless this.isVetoed}}{{this.expensesDateRange}}{{/unless}}
{{/if}}
</p>
<p class="actions">
<a href="{{this.ipfsGatewayUrl}}/{{@reimbursement.ipfsHash}}"
@@ -1,4 +1,4 @@
<ul class="item-list collapsible spaced reimbursement-list {{if @loading 'loading'}}">
<ul class="item-list spaced reimbursement-list {{if @loading 'loading'}}">
{{#each this.itemsSorted as |item|}}
<ReimbursementItem @reimbursement={{item}} />
{{/each}}
-16
View File
@@ -1,26 +1,10 @@
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { alias } from '@ember/object/computed';
import { action } from '@ember/object';
export default class BudgetController extends Controller {
@service kredits;
@service router;
@alias('kredits.reimbursementsUnconfirmed') reimbursementsUnconfirmed;
@alias('kredits.reimbursementsConfirmed') reimbursementsConfirmed;
@alias('kredits.currentUserIsCore') currentUserIsCore;
@action
addReimbursement () {
if (!this.kredits.currentUser) {
window.alert('You need to connect your RSK account first.');
return false;
}
if (!this.kredits.currentUserIsCore) {
window.alert('Only core contributors can submit reimbursements.');
return false;
}
this.router.transitionTo('reimbursements.new');
}
}
+1 -4
View File
@@ -25,10 +25,7 @@ export default Controller.extend({
kreditsToplistSorting: computed('showUnconfirmedKredits', function(){
return this.showUnconfirmedKredits ? ['amountTotal:desc'] : ['amountConfirmed:desc'];
}),
kreditsToplist: computed('kreditsByContributor', function(){
return this.kreditsByContributor.filter(c => c.amountTotal > 0);
}),
kreditsToplistSorted: sort('kreditsToplist', 'kreditsToplistSorting'),
kreditsToplist: sort('kreditsByContributor', 'kreditsToplistSorting'),
showUnconfirmedKredits: true,
hideUnconfirmedKredits: not('showUnconfirmedKredits'),
-11
View File
@@ -1,11 +0,0 @@
import { helper } from '@ember/component/helper';
export default helper(function fmtAmountSatsTitle(params) {
const amountSats = params[0];
if (typeof amountSats === 'number' && amountSats > 0) {
return `${amountSats} sats`;
} else {
return '';
}
});
+1 -1
View File
@@ -1,7 +1,7 @@
import { helper } from '@ember/component/helper';
import getLocale from 'kredits-web/utils/get-locale';
export default helper(function fmtDateLocalized(dateStr) {
export default helper(function(dateStr) {
const date = new Date(dateStr);
const locale = getLocale();
return new Intl.DateTimeFormat(locale).format(date);
+3 -7
View File
@@ -2,14 +2,10 @@ import { helper } from '@ember/component/helper';
export default helper(function fmtFiatCurrency(params) {
const lang = navigator.language || navigator.userLanguage;
const value = params[0];
const currency = params[1] || 'EUR';
if (currency === 'BTC') return `BTC ${value}`;
const formatter = new Intl.NumberFormat(lang, {
style: 'currency', currency, currencyDisplay: 'code'
style: 'currency',
currency: params[1] || 'EUR',
currencyDisplay: 'code'
})
return formatter.format(params[0]);
});
+3
View File
@@ -30,5 +30,8 @@ export default class BudgetRoute extends Route {
}
schedule('afterRender', this.kredits.fetchMissingReimbursements,
this.kredits.fetchMissingReimbursements.perform);
schedule('afterRender', this.kredits.syncReimbursementEvents,
this.kredits.syncReimbursementEvents.perform);
}
}
+1 -1
View File
@@ -42,7 +42,7 @@ export default class CommunityFundsService extends Service {
// Format and round the approximate USD value
const lang = navigator.language || navigator.userLanguage;
const balanceUSD = (res.confirmed_balance / 100000000) * this.exchangeRates.USD;
const balanceUSD = (res.confirmed_balance / 100000000) * this.exchangeRates.btcusd;
res.balanceUSD = Math.round(balanceUSD).toLocaleString(lang);
this.balances.pushObject({
+5 -23
View File
@@ -4,7 +4,6 @@ import config from 'kredits-web/config/environment';
// Need to go through proxy for CORS headers
const bitstampBaseUrl = `${config.corsProxy}https://www.bitstamp.net/api/v2`;
const kosmosBtcPriceBaseUrl = "https://storage.kosmos.org/kosmos/public/btc-price";
async function fetchFromBitstamp(currencyPair) {
try {
@@ -17,12 +16,11 @@ async function fetchFromBitstamp(currencyPair) {
}
export default class ExchangeRatesService extends Service {
@tracked EUR = 0;
@tracked USD = 0;
@tracked historic = {};
@tracked btceur = 0;
@tracked btcusd = 0;
get exchangeRatesLoaded () {
return (this.EUR !== 0) && (this.USD !== 0);
return (this.btceur !== 0) && (this.btcusd !== 0);
}
async fetchRates (source='bitstamp') {
@@ -30,24 +28,8 @@ export default class ExchangeRatesService extends Service {
switch(source) {
case 'bitstamp':
this.EUR = await fetchFromBitstamp('btceur');
this.USD = await fetchFromBitstamp('btcusd');
}
}
async fetchHistoricRates (isoDate) {
if (typeof this.historic[isoDate] === "object") {
return this.historic[isoDate];
} else {
const url = `${kosmosBtcPriceBaseUrl}/${isoDate}`;
try {
const rates = await fetch(url).then(res => res.json());
this.historic[isoDate] = rates;
return rates;
} catch(e) {
console.error(e);
Promise.reject(e);
}
this.btceur = await fetchFromBitstamp('btceur');
this.btcusd = await fetchFromBitstamp('btcusd');
}
}
}
+27
View File
@@ -780,5 +780,32 @@ export default Service.extend({
this.contributors
.findBy('address', to)
.incrementProperty('balance', value);
},
syncReimbursementEvents: task(function * () {
yield this.fetchEvents(
'Reimbursement', // contract
'ReimbursementAdded', // event
0,
// this.kredits.currentBlock - (2*60*24*14), // from block
this.currentBlock // to block
);
}).group('syncTaskGroup'),
async fetchEvents(contractName, eventName, fromBlock, toBlock) {
const contract = this.kredits[contractName].contract;
const eventFilter = contract.filters[eventName]();
const filterOptions = { fromBlock, toBlock };
console.debug(contract, eventFilter, filterOptions);
contract.queryFilter(eventFilter)
.then(events => {
events.forEach(event => {
console.debug("Event:", event.args.creator, event.args.key, event.args.value);
});
}).catch(e => {
console.error(e);
});
}
});
-10
View File
@@ -16,16 +16,6 @@ ul.item-list {
}
}
&.collapsible {
> li {
border-left: 1px solid transparent;
&:hover {
border-left: 1px solid $blue;
}
}
}
&.loading {
@include loading-border-top;
-4
View File
@@ -45,10 +45,6 @@ a {
color: $primary-color;
}
.cursor-pointer {
cursor: pointer;
}
section {
h2 {
font-size: 1.5rem;
@@ -43,6 +43,9 @@ ul.reimbursement-list {
flex: 1;
padding: 1.6rem 0 1rem 0;
&.confirmation-eta {
}
&.actions {
text-align: right;
}
+18 -10
View File
@@ -1,6 +1,22 @@
<main id="budget">
<div id="aside">
<!-- <section id="main&#45;nav"> -->
<!-- <header> -->
<!-- <h2>Budget</h2> -->
<!-- </header> -->
<!-- <div class="content"> -->
<!-- <ul> -->
<!-- <li> -->
<!-- <LinkTo @route="budget.expenses">Expenses</LinkTo> -->
<!-- </li> -->
<!-- <li> -->
<!-- <a href="#">Rewards</a> -->
<!-- </li> -->
<!-- </ul> -->
<!-- </div> -->
<!-- </section> -->
<section id="funds">
<header>
<h2>Community funds</h2>
@@ -17,11 +33,7 @@
<header class="with-nav">
<h2>Proposed Reimbursements</h2>
<nav>
<button type="button" class="button small green"
title="Submit a reimbursement"
{{on "click" this.addReimbursement}}>
add
</button>
<LinkTo @route="reimbursements.new" @title="Submit a reimbursement" class="button small green">add</LinkTo>
</nav>
</header>
<div class="content">
@@ -35,11 +47,7 @@
<header class="with-nav">
<h2>Confirmed Reimbursements</h2>
<nav>
<button type="button" class="button small green"
title="Submit a reimbursement"
{{on "click" this.addReimbursement}}>
add
</button>
<LinkTo @route="reimbursements.new" @title="Submit a reimbursement" class="button small green">add</LinkTo>
</nav>
</header>
<div class="content">
+1 -1
View File
@@ -11,7 +11,7 @@
{{/if}}
</header>
<div class="content">
<ContributorList @contributorList={{this.kreditsToplistSorted}}
<ContributorList @contributorList={{this.kreditsToplist}}
@showUnconfirmedKredits={{this.showUnconfirmedKredits}}
@selectedContributorId={{this.selectedContributorId}}
@loading={{this.kredits.syncContributors.isRunning}} />
-11
View File
@@ -1,11 +0,0 @@
export function floatToBtc(number) {
return Number(number.toFixed(8))
}
export function btcToSats(btc) {
return Math.round(btc * 100_000_000);
}
export function satsToBtc(sats) {
return Math.round((sats / 100_000_000) * 100_000_000) / 100_000_000;
}
-4
View File
@@ -1,4 +0,0 @@
export default function(value) {
const today = new Date().toISOString().split('T')[0];
return value === today;
}
+5 -3
View File
@@ -62,7 +62,9 @@ module.exports = function(environment) {
}
},
corsProxy: 'https://cors.5apps.com/?uri='
corsProxy: 'https://cors.5apps.com/?uri=',
hideVetoedEntriesAfterBlocks: 5760 // 48 hours
};
if (environment === 'development') {
@@ -76,10 +78,10 @@ module.exports = function(environment) {
ENV.githubSignupUrl = 'http://localhost:8888/kredits/signup/github';
ENV.ipfs = {
host: '10.1.1.198',
host: 'localhost',
port: '5001',
protocol: 'http',
gatewayUrl: 'http://10.1.1.198:9090/ipfs'
gatewayUrl: 'http://localhost:8080/ipfs'
};
// Uncomment if you want to use local akkounts
+19 -29
View File
@@ -1,12 +1,12 @@
{
"name": "kredits-web",
"version": "2.3.0",
"version": "2.1.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "kredits-web",
"version": "2.3.0",
"version": "2.1.1",
"license": "MIT",
"devDependencies": {
"@babel/eslint-parser": "^7.19.1",
@@ -14,7 +14,7 @@
"@ember/optional-features": "^1.3.0",
"@glimmer/component": "^1.0.0",
"@glimmer/tracking": "^1.0.0",
"@kredits/contracts": "^7.5.0",
"@kredits/contracts": "^7.3.0",
"babel-preset-es2015": "^6.22.0",
"broccoli-asset-rev": "^3.0.0",
"ember-auto-import": "^1.12.1",
@@ -3062,18 +3062,17 @@
}
},
"node_modules/@kosmos/schemas": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@kosmos/schemas/-/schemas-3.2.0.tgz",
"integrity": "sha512-GyWXmWcATcakmEdPOpafdckBgWFqcpSh+tB8nm11VGgtgA94pfoFhKZ3t88WELItKfuP/GFHgMiZmdMB3bSkdQ==",
"dev": true
"version": "3.1.0",
"dev": true,
"license": "MIT"
},
"node_modules/@kredits/contracts": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@kredits/contracts/-/contracts-7.5.0.tgz",
"integrity": "sha512-4Jw6lXn9DfZiTnMtWHwGLS5zhxEJZ2ANfAgcr7tZxqRl7Y0ijpoWvPCA+LkSGqRgKspyiw9+7vSVTtyvAyQbPQ==",
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/@kredits/contracts/-/contracts-7.3.0.tgz",
"integrity": "sha512-7Bo2LFEqGIK39G54AStas1RWouBOp+r7Vcv2vP1uLbY01Usea8SHvd2OjLP6nFgsQa0n/rto9oremHv5IAylrQ==",
"dev": true,
"dependencies": {
"@kosmos/schemas": "^3.2.0",
"@kosmos/schemas": "^3.1.0",
"ethers": "^5.4.7",
"ipfs-http-client": "^56.0.3",
"multihashes": "^4.0.3",
@@ -6817,9 +6816,7 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001599",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz",
"integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==",
"version": "1.0.30001332",
"dev": true,
"funding": [
{
@@ -6829,12 +6826,9 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
],
"license": "CC-BY-4.0"
},
"node_modules/capture-exit": {
"version": "2.0.0",
@@ -26068,18 +26062,16 @@
}
},
"@kosmos/schemas": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@kosmos/schemas/-/schemas-3.2.0.tgz",
"integrity": "sha512-GyWXmWcATcakmEdPOpafdckBgWFqcpSh+tB8nm11VGgtgA94pfoFhKZ3t88WELItKfuP/GFHgMiZmdMB3bSkdQ==",
"version": "3.1.0",
"dev": true
},
"@kredits/contracts": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@kredits/contracts/-/contracts-7.5.0.tgz",
"integrity": "sha512-4Jw6lXn9DfZiTnMtWHwGLS5zhxEJZ2ANfAgcr7tZxqRl7Y0ijpoWvPCA+LkSGqRgKspyiw9+7vSVTtyvAyQbPQ==",
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/@kredits/contracts/-/contracts-7.3.0.tgz",
"integrity": "sha512-7Bo2LFEqGIK39G54AStas1RWouBOp+r7Vcv2vP1uLbY01Usea8SHvd2OjLP6nFgsQa0n/rto9oremHv5IAylrQ==",
"dev": true,
"requires": {
"@kosmos/schemas": "^3.2.0",
"@kosmos/schemas": "^3.1.0",
"ethers": "^5.4.7",
"ipfs-http-client": "^56.0.3",
"multihashes": "^4.0.3",
@@ -29058,9 +29050,7 @@
}
},
"caniuse-lite": {
"version": "1.0.30001599",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001599.tgz",
"integrity": "sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==",
"version": "1.0.30001332",
"dev": true
},
"capture-exit": {
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "kredits-web",
"version": "2.3.0",
"version": "2.1.1",
"private": true,
"description": "Contribution dashboard of the Kosmos project",
"repository": "https://github.com/67P/kredits-web",
@@ -30,7 +30,7 @@
"@ember/optional-features": "^1.3.0",
"@glimmer/component": "^1.0.0",
"@glimmer/tracking": "^1.0.0",
"@kredits/contracts": "^7.5.0",
"@kredits/contracts": "^7.3.0",
"babel-preset-es2015": "^6.22.0",
"broccoli-asset-rev": "^3.0.0",
"ember-auto-import": "^1.12.1",
@@ -1 +0,0 @@
@charset "UTF-8";main#about,main#budget,main#dashboard{width:100%;display:grid;grid-row-gap:2rem}a,section h2{color:#68d7fb}*{margin:0;padding:0;box-sizing:border-box}:active,:focus,:hover{outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}body{margin-bottom:10rem;background-image:linear-gradient(to bottom,rgba(22,21,40,.4),rgba(0,0,0,.75)),url(/img/bg-947d3bf6bb15a1a3b07afcba4c307690.jpg);background-repeat:none;background-attachment:fixed}main{padding:1rem 2rem}main#dashboard{grid-template-areas:"stats" "contributions"}main#about,main#budget{grid-template-areas:"aside" "content"}main.center-column{display:flex;flex-direction:column;align-items:center}main.center-column section{width:600px;max-width:100%}main.center-column section header{text-align:center}@media (max-width:600px){main{padding:1rem}main div#content section:first-of-type{margin-top:0}}main section .content a{font-size:inherit}main section .content.text-lg p{font-size:1.35rem;margin-bottom:2rem;line-height:150%}main section .content.text-center{text-align:center}main section .content p.actions{text-align:center;padding-top:2rem}main section.text h2{margin:4rem 0 2rem}main section.text h2:first-of-type{margin-top:0}main section.text p{font-size:1.35rem;margin-bottom:2rem;line-height:150%}@media (min-width:550px){main#about,main#budget,main#dashboard.with-details{grid-column-gap:3rem;grid-template-columns:2fr 4fr 2fr}main#dashboard{grid-column-gap:4rem;grid-row-gap:2rem;grid-template-columns:2fr 4fr;grid-template-areas:"stats contributions"}main#dashboard.with-details{grid-template-areas:"stats contributions details"}main#about,main#budget{grid-template-areas:"aside content empty"}}main section{margin-bottom:5rem}main section:first-of-type{margin-top:2rem}main section header{margin-bottom:3rem}main section header.with-nav{display:grid;grid-template-columns:auto 5rem;grid-template-areas:"title" "actions"}main section header h2{display:inline-block}main section header nav{display:flex;flex-direction:row;align-items:center;justify-content:flex-end}@media (max-width:600px){main section{margin-bottom:5rem}main section header{margin-bottom:2rem}}main section .mb-4{margin-bottom:1rem}main section .mb-8,ul.item-list.spaced>li{margin-bottom:2rem}body,html{font-family:"Open Sans",sans-serif;font-weight:300;font-size:12px;color:#fff}@media screen and (min-width:900px){body{background-size:cover}}button,h1,h2,h3,h4,h5,input{font-family:"Open Sans",sans-serif;font-size:1rem;font-weight:300}.cursor-pointer{cursor:pointer}section h2{font-size:1.5rem}section#people .content p.stats{margin-bottom:1rem;font-size:1rem;color:#fff;text-align:center}section#people .content p.stats span.number{font-weight:600}section#contributions-by-type .chart{width:50%;margin-left:auto;margin-right:auto}@media (max-width:600px){section#contributions-by-type .chart{width:75%}}@media (min-width:550px){section h2{font-size:2rem}}.button,button,input[type=submit]{display:inline-block;padding:.6rem 2rem;background-color:rgba(22,21,40,.6);border:1px solid #161528;border-radius:3px;color:#68d7fb;font-weight:500;text-decoration:none;text-transform:uppercase;cursor:pointer;letter-spacing:.1em;-webkit-appearance:none}.button+.button,.button+button,.button+input[type=submit],button+.button,button+button,button+input[type=submit],input[type=submit]+.button,input[type=submit]+button,input[type=submit]+input[type=submit]{margin-left:.5rem}.button:hover,button:hover,input[type=submit]:hover{background-color:rgba(22,21,40,.8)}.button.active,.button:active,.button:focus,button.active,button:active,button:focus,input[type=submit].active,input[type=submit]:active,input[type=submit]:focus{border-color:#68d7fb}.button[disabled],button[disabled],input[type=submit][disabled]{color:rgba(255,255,255,.5)}.button.small,button.small,input[type=submit].small{font-size:.86rem;padding:.2rem .8rem}.button.small svg,button.small svg,input[type=submit].small svg{width:1em;height:1em;vertical-align:middle;margin-right:.4rem}.button.danger:not(:disabled),button.danger:not(:disabled),input[type=submit].danger:not(:disabled){color:#fb6868;background-color:rgba(40,21,21,.6);border-color:#281515}.button.danger:not(:disabled):hover,button.danger:not(:disabled):hover,input[type=submit].danger:not(:disabled):hover{background-color:rgba(40,21,21,.8)}.button.danger:not(:disabled).active,.button.danger:not(:disabled):active,.button.danger:not(:disabled):focus,button.danger:not(:disabled).active,button.danger:not(:disabled):active,button.danger:not(:disabled):focus,input[type=submit].danger:not(:disabled).active,input[type=submit].danger:not(:disabled):active,input[type=submit].danger:not(:disabled):focus{border-color:#fb6868}.button.green:not(:disabled),button.green:not(:disabled),input[type=submit].green:not(:disabled){color:#97fb68;background-color:rgba(21,40,21,.6);border-color:#152815}.button.green:not(:disabled):hover,button.green:not(:disabled):hover,input[type=submit].greeLine truncated
@@ -1,5 +1,5 @@
"use strict"
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}define("kredits-web/app",["exports","ember-resolver","ember-load-initializers","kredits-web/config/environment"],(function(e,t,n,r){function o(e,t){for(var n=0;n<t.length;n++){var r=t[n]
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}define("kredits-web/app",["exports","ember-resolver","ember-load-initializers","kredits-web/config/environment"],(function(e,t,n,r){function o(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
@@ -54,7 +54,7 @@ var n=Object.prototype.toString.call(e).slice(8,-1)
if("Map"===n||"Set"===n)return Array.from(e)
if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return O(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){(null==t||t>e.length)&&(t=e.length)
for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n]
return r}function _(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function j(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function x(e,t){for(var n=0;n<t.length;n++){var r=t[n]
return r}function _(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function x(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function j(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function P(e,t){return(P=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function E(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
@@ -67,81 +67,68 @@ if(void 0!==t)throw new TypeError("Derived constructors may only return object o
return R(e)}function R(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function S(e){return(S=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function M(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var T=(o=Ember._tracked,i=Ember._tracked,u=Ember._tracked,a=Ember._tracked,s=Ember._tracked,c=Ember._tracked,l=Ember._tracked,f=Ember._action,d=Ember._action,p=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
var B=(o=Ember._tracked,i=Ember._tracked,u=Ember._tracked,a=Ember._tracked,s=Ember._tracked,c=Ember._tracked,l=Ember._tracked,f=Ember._action,d=Ember._action,p=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&P(e,t)})(a,e)
var t,o,i,u=E(a)
function a(){var e
j(this,a)
x(this,a)
for(var t=arguments.length,r=new Array(t),o=0;o<t;o++)r[o]=arguments[o]
return _(R(e=u.call.apply(u,[this].concat(r))),"amount",b,R(e)),_(R(e),"currency",m,R(e)),_(R(e),"date",y,R(e)),_(R(e),"title",h,R(e)),_(R(e),"description",v,R(e)),_(R(e),"url",g,R(e)),_(R(e),"tags",w,R(e)),z(R(e),"defaultDate",(0,n.default)().startOf("hour").toDate()),z(R(e),"currencies",[{code:"EUR"},{code:"USD"},{code:"BTC"}]),e}return t=a,(o=[{key:"isValidAmount",get:function(){return(0,r.default)(this.amount)}},{key:"amountInputClass",get:function(){return this.isValidTotal?"valid":""}},{key:"validateForm",value:function(){var e=document.querySelector("form#add-expense-item"),t=e.querySelectorAll("input")
return _(R(e=u.call.apply(u,[this].concat(r))),"amount",b,R(e)),_(R(e),"currency",m,R(e)),_(R(e),"date",y,R(e)),_(R(e),"title",h,R(e)),_(R(e),"description",v,R(e)),_(R(e),"url",g,R(e)),_(R(e),"tags",w,R(e)),z(R(e),"defaultDate",(0,n.default)().startOf("hour").toDate()),z(R(e),"currencies",[{code:"EUR"},{code:"USD"}]),e}return t=a,(o=[{key:"isValidAmount",get:function(){return(0,r.default)(this.amount)}},{key:"amountInputClass",get:function(){return this.isValidTotal?"valid":""}},{key:"validateForm",value:function(){var e=document.querySelector("form#add-expense-item"),t=e.querySelectorAll("input")
t.forEach((function(e){return e.classList.remove("invalid")}))
var n=!0
return this.isValidAmount||(document.querySelector("input[name=expense-amount]").classList.add("invalid"),n=!1),e.checkValidity()||t.forEach((function(e){e.validity.valid||(e.classList.add("invalid"),n=!1)})),n}},{key:"updateCurrency",value:function(e){this.currency=e.target.value}},{key:"submit",value:function(e){e.preventDefault()
var t=this.date instanceof Array?this.date[0]:this.date,r=k((0,n.default)(t).utcOffset(0,!0).toISOString().split("T"),1)[0]
if(!this.validateForm())return!1
var o={amount:parseFloat(this.amount),currency:this.currency,date:r,title:this.title,description:Ember.isPresent(this.description)?this.description:void 0,url:Ember.isPresent(this.url)?this.url:void 0}
Ember.isPresent(this.tags)&&(o.tags=this.tags.split(",").map((function(e){return e.trim()})).filter((function(e){return e.length>0}))),this.args.addExpenseItem(o)}}])&&x(t.prototype,o),i&&x(t,i),Object.defineProperty(t,"prototype",{writable:!1}),a}(t.default),b=M(p.prototype,"amount",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"0"}}),m=M(p.prototype,"currency",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"EUR"}}),y=M(p.prototype,"date",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return(0,n.default)().startOf("hour").toDate()}}),h=M(p.prototype,"title",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),v=M(p.prototype,"description",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),g=M(p.prototype,"url",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),w=M(p.prototype,"tags",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),M(p.prototype,"updateCurrency",[f],Object.getOwnPropertyDescriptor(p.prototype,"updateCurrency"),p.prototype),M(p.prototype,"submit",[d],Object.getOwnPropertyDescriptor(p.prototype,"submit"),p.prototype),p)
e.default=T})),define("kredits-web/components/add-expense-item/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
Ember.isPresent(this.tags)&&(o.tags=this.tags.split(",").map((function(e){return e.trim()})).filter((function(e){return e.length>0}))),this.args.addExpenseItem(o)}}])&&j(t.prototype,o),i&&j(t,i),Object.defineProperty(t,"prototype",{writable:!1}),a}(t.default),b=M(p.prototype,"amount",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"0"}}),m=M(p.prototype,"currency",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"EUR"}}),y=M(p.prototype,"date",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return(0,n.default)().startOf("hour").toDate()}}),h=M(p.prototype,"title",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),v=M(p.prototype,"description",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),g=M(p.prototype,"url",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),w=M(p.prototype,"tags",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),M(p.prototype,"updateCurrency",[f],Object.getOwnPropertyDescriptor(p.prototype,"updateCurrency"),p.prototype),M(p.prototype,"submit",[d],Object.getOwnPropertyDescriptor(p.prototype,"submit"),p.prototype),p)
e.default=B})),define("kredits-web/components/add-expense-item/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"xrdEJbVd",block:'{"symbols":["currency"],"statements":[[11,"form"],[24,1,"add-expense-item"],[24,"novalidate",""],[4,[38,1],["submit",[32,0,["submit"]]],null],[12],[2,"\\n "],[10,"fieldset"],[14,0,"horizontal"],[12],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Amount:"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@name","@type","@placeholder","@value","@required","@pattern","@class"],["expense-amount","text","10",[32,0,["amount"]],true,"([0-9]*[.])?[0-9]+",[32,0,["amountInputClass"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Currency:"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[11,"select"],[24,"required",""],[24,3,"expense-currency"],[4,[38,1],["change",[32,0,["updateCurrency"]]],null],[12],[2,"\\n "],[10,"option"],[14,2,""],[14,"selected",""],[14,"disabled",""],[14,"hidden",""],[12],[13],[2,"\\n"],[6,[37,3],[[30,[36,2],[[30,[36,2],[[32,0,["currencies"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"option"],[15,2,[32,1,["code"]]],[15,"selected",[30,[36,0],[[32,0,["currency"]],[32,1,["code"]]],null]],[12],[1,[32,1,["code"]]],[13],[2,"\\n"]],"parameters":[1]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Date:"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"ember-flatpickr",[],[["@date","@defaultDate","@maxDate","@enableTime","@onChange"],[[32,0,["date"]],[32,0,["defaultDate"]],[32,0,["defaultDate"]],false,[30,[36,5],[[30,[36,4],[[32,0,["date"]]],null]],null]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Title:"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@name","@type","@value","@required"],["expense-title","text",[32,0,["title"]],true]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Description (optional):"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@name","@type","@value"],["expense-description","text",[32,0,["description"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"URL (optional):"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@name","@type","@value"],["expense-url","url",[32,0,["url"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Tags (comma-separated, optional):"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@name","@type","@value"],["expense-tags","text",[32,0,["tags"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[8,"input",[],[["@type","@value","@class","@title"],["submit","Add","green","Add item to reimbursement"]],null],[2,"\\n "],[13],[2,"\\n"],[13]],"hasEval":false,"upvars":["eq","on","-track-array","each","mut","fn"]}',meta:{moduleName:"kredits-web/components/add-expense-item/template.hbs"}})
e.default=t})),define("kredits-web/components/add-reimbursement/component",["exports","@glimmer/component","kredits-web/utils/btc-conversions","kredits-web/utils/is-valid-amount","kredits-web/utils/iso-date-is-today","kredits-web/utils/read-file-content","kredits-web/config/environment"],(function(e,t,n,r,o,i,u){var a,s,c,l,f,d,p,b,m,y,h,v,g,w,k,O,_,j,x,P,E,C,R,S,z
function M(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]
e.default=t})),define("kredits-web/components/add-reimbursement/component",["exports","@glimmer/component","kredits-web/utils/is-valid-amount","kredits-web/utils/read-file-content","kredits-web/config/environment"],(function(e,t,n,r,o){var i,u,a,s,c,l,f,d,p,b,m,y,h,v,g,w,k,O,_,x,j,P,E,C,R
function S(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]
if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return
if("string"==typeof e)return T(e,t)
if("string"==typeof e)return z(e,t)
var n=Object.prototype.toString.call(e).slice(8,-1)
"Object"===n&&e.constructor&&(n=e.constructor.name)
if("Map"===n||"Set"===n)return Array.from(e)
if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return T(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n)
if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return z(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n)
var r=0,o=function(){}
return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1
return{s:function(){n=n.call(e)},n:function(){var e=n.next()
return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw i}}}}function T(e,t){(null==t||t>e.length)&&(t=e.length)
return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw i}}}}function z(e,t){(null==t||t>e.length)&&(t=e.length)
for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n]
return r}function B(e,t,n,r,o,i,u){try{var a=e[i](u),s=a.value}catch(c){return void n(c)}a.done?t(s):Promise.resolve(s).then(r,o)}function A(e){return function(){var t=this,n=arguments
return new Promise((function(r,o){var i=e.apply(t,n)
function u(e){B(i,r,o,u,a,"next",e)}function a(e){B(i,r,o,u,a,"throw",e)}u(void 0)}))}}function I(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function D(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function U(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function N(e,t){return(N=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function F(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
return r}function M(e,t,n,r,o,i,u){try{var a=e[i](u),s=a.value}catch(c){return void n(c)}a.done?t(s):Promise.resolve(s).then(r,o)}function B(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function T(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function A(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function I(e,t){return(I=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function D(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()
return function(){var n,r=V(e)
if(t){var o=V(this).constructor
return function(){var n,r=N(e)
if(t){var o=N(this).constructor
n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments)
return L(this,n)}}function L(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
return U(this,n)}}function U(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined")
return H(e)}function H(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function V(e){return(V=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function q(e,t,n,r,o){var i={}
return F(e)}function F(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function N(e){return(N=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function L(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var K=(a=Ember.inject.service,s=Ember.inject.service,c=Ember.inject.service,l=Ember.computed.alias("kredits.contributorsSorted"),f=Ember._tracked,d=Ember._tracked,p=Ember._tracked,b=Ember._tracked,m=Ember._tracked,y=Ember._action,h=Ember._action,v=Ember._action,g=Ember._action,w=Ember._action,k=Ember._action,O=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&N(e,t)})(p,e)
var t,a,s,c,l,f,d=F(p)
function p(){var e
return D(this,p),I(H(e=d.apply(this,arguments)),"router",_,H(e)),I(H(e),"kredits",j,H(e)),I(H(e),"exchangeRates",x,H(e)),I(H(e),"contributors",P,H(e)),I(H(e),"recipientId",E,H(e)),I(H(e),"title",C,H(e)),I(H(e),"total",R,H(e)),I(H(e),"expenses",S,H(e)),I(H(e),"expenseFormVisible",z,H(e)),e.exchangeRates.fetchRates(),e}return t=p,(a=[{key:"contributorId",get:function(){var e
return this.recipientId||(null===(e=this.kredits.currentUser)||void 0===e?void 0:e.id)}},{key:"isValidTotal",get:function(){return(0,r.default)(this.total)}},{key:"totalInputClass",get:function(){return this.isValidTotal?"valid":""}},{key:"totalEUR",get:function(){var e=this.expenses.filterBy("currency","EUR")
var H=(i=Ember.inject.service,u=Ember.inject.service,a=Ember.inject.service,s=Ember.computed.alias("kredits.contributorsSorted"),c=Ember._tracked,l=Ember._tracked,f=Ember._tracked,d=Ember._tracked,p=Ember._tracked,b=Ember._action,m=Ember._action,y=Ember._action,h=Ember._action,v=Ember._action,g=Ember._action,w=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&I(e,t)})(l,e)
var t,i,u,a,s,c=D(l)
function l(){var e
return T(this,l),B(F(e=c.apply(this,arguments)),"router",k,F(e)),B(F(e),"kredits",O,F(e)),B(F(e),"exchangeRates",_,F(e)),B(F(e),"contributors",x,F(e)),B(F(e),"recipientId",j,F(e)),B(F(e),"title",P,F(e)),B(F(e),"total",E,F(e)),B(F(e),"expenses",C,F(e)),B(F(e),"expenseFormVisible",R,F(e)),e.exchangeRates.fetchRates(),e}return t=l,(i=[{key:"isValidTotal",get:function(){return(0,n.default)(this.total)}},{key:"totalInputClass",get:function(){return this.isValidTotal?"valid":""}},{key:"totalEUR",get:function(){var e=this.expenses.filterBy("currency","EUR")
return e.length>0?e.mapBy("amount").reduce((function(e,t){return e+t})):0}},{key:"totalUSD",get:function(){var e=this.expenses.filterBy("currency","USD")
return e.length>0?e.mapBy("amount").reduce((function(e,t){return e+t})):0}},{key:"submitButtonEnabled",get:function(){return this.isValidTotal&&this.expenses.length>0}},{key:"submitButtonDisabled",get:function(){return!this.submitButtonEnabled}},{key:"scrollToExpenseItemForm",value:function(){document.getElementById("new-expense-item").scrollIntoView()}},{key:"addExpensesFromFile",value:(f=A(regeneratorRuntime.mark((function e(t){var n,r,o,u,a
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,i.default)(t.target.files[0])
case 2:if(n=e.sent,(r=JSON.parse(n))instanceof Array){o=M(r)
try{for(o.s();!(u=o.n()).done;)a=u.value,this.addExpenseItem(a)}catch(s){o.e(s)}finally{o.f()}}else console.warn("Expenses in file must be a list of items:"),console.debug(n)
case 5:case"end":return e.stop()}}),e,this)}))),function(e){return f.apply(this,arguments)})},{key:"updateContributor",value:function(e){this.recipientId=parseInt(e.target.value)}},{key:"showExpenseForm",value:function(){this.expenseFormVisible=!0,Ember.run.scheduleOnce("afterRender",this,this.scrollToExpenseItemForm)}},{key:"addExpenseItem",value:(l=A(regeneratorRuntime.mark((function e(t){var r,i,u
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=parseFloat(this.total),"BTC"!==t.currency){e.next=6
break}t.amountSats=(0,n.btcToSats)(t.amount),r+=t.amount,e.next=16
break
case 6:if(!(0,o.default)(t.date)){e.next=10
break}i=(0,n.btcToSats)(t.amount/this.exchangeRates[t.currency]),e.next=14
break
case 10:return e.next=12,this.exchangeRates.fetchHistoricRates(t.date)
case 12:u=e.sent,i=(0,n.btcToSats)(t.amount/u[t.currency])
case 14:t.amountSats=i,r+=(0,n.satsToBtc)(i)
case 16:console.debug("Adding expense:",t),this.total=r.toFixed(8),this.expenses.pushObject(t),this.expenseFormVisible=!1
case 20:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"removeExpenseItem",value:(c=A(regeneratorRuntime.mark((function e(t){var r,o
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=parseFloat(this.total),o=(0,n.satsToBtc)(t.amountSats),r-=o,this.total=r.toFixed(8),this.expenses.removeObject(t),0===this.expenses.length&&(this.expenseFormVisible=!0)
case 6:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"submit",value:function(e){var t=this
return e.length>0?e.mapBy("amount").reduce((function(e,t){return e+t})):0}},{key:"submitButtonEnabled",get:function(){return this.isValidTotal&&this.expenses.length>0}},{key:"submitButtonDisabled",get:function(){return!this.submitButtonEnabled}},{key:"scrollToExpenseItemForm",value:function(){document.getElementById("new-expense-item").scrollIntoView()}},{key:"updateTotalAmountFromFiat",value:function(){var e=parseFloat(this.total)
this.exchangeRates.btceur>0&&this.totalEUR>0&&(e+=this.totalEUR/this.exchangeRates.btceur),this.exchangeRates.btcusd>0&&this.totalUSD>0&&(e+=this.totalUSD/this.exchangeRates.btcusd),0===this.totalUSD&&0===this.totalEUR&&(e=0),this.total=e.toFixed(8)}},{key:"addExpensesFromFile",value:(a=regeneratorRuntime.mark((function e(t){var n,o,i,u,a
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,r.default)(t.target.files[0])
case 2:if(n=e.sent,(o=JSON.parse(n))instanceof Array){i=S(o)
try{for(i.s();!(u=i.n()).done;)a=u.value,this.addExpenseItem(a)}catch(s){i.e(s)}finally{i.f()}}else console.warn("Expenses in file must be a list of items:"),console.debug(n)
case 5:case"end":return e.stop()}}),e,this)})),s=function(){var e=this,t=arguments
return new Promise((function(n,r){var o=a.apply(e,t)
function i(e){M(o,n,r,i,u,"next",e)}function u(e){M(o,n,r,i,u,"throw",e)}i(void 0)}))},function(e){return s.apply(this,arguments)})},{key:"updateContributor",value:function(e){this.recipientId=e.target.value}},{key:"showExpenseForm",value:function(){this.expenseFormVisible=!0,Ember.run.scheduleOnce("afterRender",this,this.scrollToExpenseItemForm)}},{key:"addExpenseItem",value:function(e){this.expenses.pushObject(e),this.updateTotalAmountFromFiat(),this.expenseFormVisible=!1}},{key:"removeExpenseItem",value:function(e){this.expenses.removeObject(e),this.updateTotalAmountFromFiat(),0===this.expenses.length&&(this.expenseFormVisible=!0)}},{key:"submit",value:function(e){var t=this
if(e.preventDefault(),!this.kredits.currentUser)return window.alert("You need to connect your RSK account first."),!1
if(!this.kredits.currentUserIsCore)return window.alert("Only core contributors can submit reimbursements."),!1
var r=this.contributors.findBy("id",this.contributorId),o={amount:(0,n.btcToSats)(this.total),token:u.default.tokens.BTC,recipientId:this.contributorId,title:"Expenses covered by ".concat(r.name),description:this.description,url:this.url,expenses:JSON.parse(JSON.stringify(this.expenses))}
this.inProgress=!0,this.kredits.addReimbursement(o).then((function(){t.router.transitionTo("budget")})).catch((function(e){console.error("Could not add reimbursement:",e),window.alert("Something went wrong. Please check the browser console.")})).finally((function(){t.inProgress=!1}))}}])&&U(t.prototype,a),s&&U(t,s),Object.defineProperty(t,"prototype",{writable:!1}),p}(t.default),_=q(O.prototype,"router",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),j=q(O.prototype,"kredits",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),x=q(O.prototype,"exchangeRates",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),P=q(O.prototype,"contributors",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),E=q(O.prototype,"recipientId",[f],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return null}}),C=q(O.prototype,"title",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),R=q(O.prototype,"total",[p],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"0"}}),S=q(O.prototype,"expenses",[b],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return Ember.A([])}}),z=q(O.prototype,"expenseFormVisible",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!0}}),q(O.prototype,"addExpensesFromFile",[y],Object.getOwnPropertyDescriptor(O.prototype,"addExpensesFromFile"),O.prototype),q(O.prototype,"updateContributor",[h],Object.getOwnPropertyDescriptor(O.prototype,"updateContributor"),O.prototype),q(O.prototype,"showExpenseForm",[v],Object.getOwnPropertyDescriptor(O.prototype,"showExpenseForm"),O.prototype),q(O.prototype,"addExpenseItem",[g],Object.getOwnPropertyDescriptor(O.prototype,"addExpenseItem"),O.prototype),q(O.prototype,"removeExpenseItem",[w],Object.getOwnPropertyDescriptor(O.prototype,"removeExpenseItem"),O.prototype),q(O.prototype,"submit",[k],Object.getOwnPropertyDescriptor(O.prototype,"submit"),O.prototype),O)
e.default=K})),define("kredits-web/components/add-reimbursement/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"ZACtElUk",block:'{"symbols":["contributor"],"statements":[[11,"form"],[24,"novalidate",""],[4,[38,1],["submit",[32,0,["submit"]]],null],[12],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Contributor:"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[11,"select"],[24,1,"contributor"],[24,"required",""],[4,[38,1],["change",[32,0,["updateContributor"]]],null],[12],[2,"\\n"],[6,[37,4],[[30,[36,3],[[30,[36,3],[[32,0,["contributors"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"option"],[15,2,[32,1,["id"]]],[15,"selected",[30,[36,2],[[32,0,["contributorId"]],[32,1,["id"]]],null]],[12],[1,[32,1,["name"]]],[13],[2,"\\n"]],"parameters":[1]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"fieldset"],[14,0,"horizontal thirds total-amounts"],[12],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Total amount (BTC):"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@type","@name","@placeholder","@value","@required","@pattern","@class"],["text","total-btc","0.0015",[32,0,["total"]],true,"([0-9]*[.])?[0-9]+",[32,0,["totalInputClass"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"EUR total"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@type","@name","@value","@disabled"],["text","total-eur",[32,0,["totalEUR"]],true]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"USD total"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@type","@name","@value","@disabled"],["text","total-usd",[32,0,["totalUSD"]],true]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"h3"],[12],[2,"Expense items"],[13],[2,"\\n"],[6,[37,5],[[32,0,["expenses"]]],null,[["default","else"],[{"statements":[[2," "],[8,"expense-list",[],[["@expenses","@removeExpenseItem","@deletable"],[[32,0,["expenses"]],[32,0,["removeExpenseItem"]],true]],null],[2,"\\n\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[11,"button"],[24,1,"add-another-item"],[24,0,"green small"],[24,4,"button"],[4,[38,1],["click",[32,0,["showExpenseForm"]]],null],[12],[2,"\\n + Add another item\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"p"],[12],[2,"No line items yet."],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n"],[6,[37,5],[[32,0,["inProgress"]]],null,[["default","else"],[{"statements":[[2," "],[8,"input",[],[["@type","@value","@disabled","@title"],["submit","Submitting...",true,"Submit/propose this reimbursement"]],null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[8,"input",[],[["@type","@value","@disabled","@title"],["submit","Submit",[32,0,["submitButtonDisabled"]],"Submit/propose this reimbursement"]],null],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n"],[6,[37,5],[[32,0,["expenseFormVisible"]]],null,[["default"],[{"statements":[[2," "],[10,"h3"],[14,1,"new-expense-item"],[12],[2,"New expense item"],[13],[2,"\\n "],[8,"add-expense-item",[],[["@addExpenseItem"],[[30,[36,0],[[32,0,["addExpenseItem"]]],null]]],null],[2,"\\n"]],"parameters":[]}]]],[13],[2,"\\n"],[10,"form"],[14,1,"add-expenses-from-file"],[12],[2,"\\n "],[10,"h3"],[12],[2,"Add expense items from file"],[13],[2,"\\n "],[10,"input"],[14,"multiple","false"],[15,"onchange",[30,[36,0],[[32,0,["addExpensesFromFile"]]],null]],[14,"accept","application/json"],[14,4,"file"],[12],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["fn","on","eq","-track-array","each","if"]}',meta:{moduleName:"kredits-web/components/add-reimbursement/template.hbs"}})
var n=this.contributors.findBy("id",parseInt(this.recipientId)),r={amount:parseInt(1e8*parseFloat(this.total)),token:o.default.tokens.BTC,recipientId:parseInt(this.recipientId),title:"Expenses covered by ".concat(n.name),description:this.description,url:this.url,expenses:JSON.parse(JSON.stringify(this.expenses))}
this.inProgress=!0,this.kredits.addReimbursement(r).then((function(){t.router.transitionTo("budget")})).catch((function(e){console.error("Could not add reimbursement:",e),window.alert("Something went wrong. Please check the browser console.")})).finally((function(){t.inProgress=!1}))}}])&&A(t.prototype,i),u&&A(t,u),Object.defineProperty(t,"prototype",{writable:!1}),l}(t.default),k=L(w.prototype,"router",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),O=L(w.prototype,"kredits",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),_=L(w.prototype,"exchangeRates",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),x=L(w.prototype,"contributors",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),j=L(w.prototype,"recipientId",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return null}}),P=L(w.prototype,"title",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return""}}),E=L(w.prototype,"total",[f],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return"0"}}),C=L(w.prototype,"expenses",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return Ember.A([])}}),R=L(w.prototype,"expenseFormVisible",[p],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!0}}),L(w.prototype,"addExpensesFromFile",[b],Object.getOwnPropertyDescriptor(w.prototype,"addExpensesFromFile"),w.prototype),L(w.prototype,"updateContributor",[m],Object.getOwnPropertyDescriptor(w.prototype,"updateContributor"),w.prototype),L(w.prototype,"showExpenseForm",[y],Object.getOwnPropertyDescriptor(w.prototype,"showExpenseForm"),w.prototype),L(w.prototype,"addExpenseItem",[h],Object.getOwnPropertyDescriptor(w.prototype,"addExpenseItem"),w.prototype),L(w.prototype,"removeExpenseItem",[v],Object.getOwnPropertyDescriptor(w.prototype,"removeExpenseItem"),w.prototype),L(w.prototype,"submit",[g],Object.getOwnPropertyDescriptor(w.prototype,"submit"),w.prototype),w)
e.default=H})),define("kredits-web/components/add-reimbursement/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"GxxUddPT",block:'{"symbols":["contributor"],"statements":[[11,"form"],[24,"novalidate",""],[4,[38,1],["submit",[32,0,["submit"]]],null],[12],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Contributor:"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[11,"select"],[24,"required",""],[4,[38,1],["change",[32,0,["updateContributor"]]],null],[12],[2,"\\n "],[10,"option"],[14,2,""],[14,"selected",""],[14,"disabled",""],[14,"hidden",""],[12],[13],[2,"\\n"],[6,[37,4],[[30,[36,3],[[30,[36,3],[[32,0,["contributors"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"option"],[15,2,[32,1,["id"]]],[15,"selected",[30,[36,2],[[32,0,["contributorId"]],[32,1,["id"]]],null]],[12],[1,[32,1,["name"]]],[13],[2,"\\n"]],"parameters":[1]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"fieldset"],[14,0,"horizontal thirds total-amounts"],[12],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"Total amount (BTC):"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@type","@placeholder","@value","@required","@pattern","@class"],["text","0.0015",[32,0,["total"]],true,"([0-9]*[.])?[0-9]+",[32,0,["totalInputClass"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"EUR total"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@type","@name","@value","@disabled"],["text","total-eur",[32,0,["totalEUR"]],true]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"label"],[12],[2,"\\n "],[10,"p"],[14,0,"label"],[12],[2,"USD total"],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"input",[],[["@type","@name","@value","@disabled"],["text","total-usd",[32,0,["totalUSD"]],true]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"h3"],[12],[2,"Expense items"],[13],[2,"\\n"],[6,[37,5],[[32,0,["expenses"]]],null,[["default","else"],[{"statements":[[2," "],[8,"expense-list",[],[["@expenses","@removeExpenseItem","@deletable"],[[32,0,["expenses"]],[32,0,["removeExpenseItem"]],true]],null],[2,"\\n\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[11,"button"],[24,0,"green small"],[24,4,"button"],[4,[38,1],["click",[32,0,["showExpenseForm"]]],null],[12],[2,"+ Add another item"],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"p"],[12],[2,"No line items yet."],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n"],[6,[37,5],[[32,0,["inProgress"]]],null,[["default","else"],[{"statements":[[2," "],[8,"input",[],[["@type","@value","@disabled","@title"],["submit","Submitting...",true,"Submit/propose this reimbursement"]],null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[8,"input",[],[["@type","@value","@disabled","@title"],["submit","Submit",[32,0,["submitButtonDisabled"]],"Submit/propose this reimbursement"]],null],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n"],[6,[37,5],[[32,0,["expenseFormVisible"]]],null,[["default"],[{"statements":[[2," "],[10,"h3"],[14,1,"new-expense-item"],[12],[2,"New expense item"],[13],[2,"\\n "],[8,"add-expense-item",[],[["@addExpenseItem"],[[30,[36,0],[[32,0,["addExpenseItem"]]],null]]],null],[2,"\\n"]],"parameters":[]}]]],[13],[2,"\\n"],[10,"form"],[14,1,"add-expenses-from-file"],[12],[2,"\\n "],[10,"h3"],[12],[2,"Add expense items from file"],[13],[2,"\\n "],[10,"input"],[14,"multiple","false"],[15,"onchange",[30,[36,0],[[32,0,["addExpensesFromFile"]]],null]],[14,"accept","application/json"],[14,4,"file"],[12],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["fn","on","eq","-track-array","each","if"]}',meta:{moduleName:"kredits-web/components/add-reimbursement/template.hbs"}})
e.default=t})),define("kredits-web/components/budget-balances/component",["exports","@glimmer/component"],(function(e,t){var n,r,o
function i(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
@@ -190,7 +177,7 @@ a(this,p)
for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r]
return u(d(e=f.call.apply(f,[this].concat(n))),"kredits",i,d(e)),e}return t=p,(r=[{key:"confirmedInBlocks",get:function(){return this.args.confirmedAtBlock-this.kredits.currentBlock}},{key:"confirmedInSeconds",get:function(){return 30*this.confirmedInBlocks}},{key:"confirmedInHumanTime",get:function(){return n.default.duration(this.confirmedInSeconds,"seconds").humanize()}},{key:"isConfirmed",get:function(){return this.confirmedInBlocks<=0}}])&&s(t.prototype,r),o&&s(t,o),Object.defineProperty(t,"prototype",{writable:!1}),p}(t.default),b=o.prototype,m="kredits",y=[r],h={configurable:!0,enumerable:!0,writable:!0,initializer:null},g={},Object.keys(h).forEach((function(e){g[e]=h[e]})),g.enumerable=!!g.enumerable,g.configurable=!!g.configurable,("value"in g||g.initializer)&&(g.writable=!0),g=y.slice().reverse().reduce((function(e,t){return t(b,m,e)||e}),g),v&&void 0!==g.initializer&&(g.value=g.initializer?g.initializer.call(v):void 0,g.initializer=void 0),void 0===g.initializer&&(Object.defineProperty(b,m,g),g=null),i=g,o)
e.default=w})),define("kredits-web/components/confirmed-in/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"wZ+crHjf",block:'{"symbols":["@confirmedAtBlock"],"statements":[[6,[37,0],[[32,0,["isConfirmed"]]],null,[["default","else"],[{"statements":[[2,"Confirmed at block "],[10,"strong"],[12],[1,[32,1]],[13],[2," (~ "],[1,[32,0,["confirmedInHumanTime"]]],[2," ago)\\n"]],"parameters":[]},{"statements":[[2,"Confirming in "],[10,"strong"],[12],[1,[32,0,["confirmedInBlocks"]]],[13],[2," blocks (~ "],[1,[32,0,["confirmedInHumanTime"]]],[2,")\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["if"]}',meta:{moduleName:"kredits-web/components/confirmed-in/template.hbs"}})
var t=Ember.HTMLBars.template({id:"Q4nwoyU+",block:'{"symbols":[],"statements":[[6,[37,0],[[32,0,["isConfirmed"]]],null,[["default"],[{"statements":[[2,"Confirming in "],[10,"strong"],[12],[1,[32,0,["confirmedInBlocks"]]],[13],[2," blocks (~ "],[1,[32,0,["confirmedInHumanTime"]]],[2,")\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["unless"]}',meta:{moduleName:"kredits-web/components/confirmed-in/template.hbs"}})
e.default=t})),define("kredits-web/components/contribution-list/component",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Component.extend({router:Ember.inject.service(),tagName:"div",classNames:["contributions"],selectedContribution:null,showQuickFilter:!1,hideSmallContributions:!1,contributorId:null,contributionKind:null,kredits:Ember.inject.service(),contributorsSorting:Object.freeze(["name:asc"]),contributors:Ember.computed.sort("kredits.contributors","contributorsSorting"),contributorsActive:Ember.computed("contributors.[]","contributions",(function(){var e=new Set(this.contributions.mapBy("contributorId"))
return this.contributors.filter((function(t){return e.has(t.id)}))})),contributionKinds:Ember.computed("contributions.[]",(function(){return this.contributions.mapBy("kind").uniq()})),contributionsFiltered:Ember.computed("contributions.[]","hideSmallContributions","contributorId","contributionKind",(function(){var e=this
@@ -198,29 +185,10 @@ return this.contributions.filter((function(t){var n=!0
return e.hideSmallContributions&&t.amount<=500&&(n=!1),Ember.isPresent(e.contributorId)&&t.contributorId!==parseInt(e.contributorId)&&(n=!1),Ember.isPresent(e.contributionKind)&&t.kind!==e.contributionKind&&(n=!1),n}))})),actions:{veto:function(e){this.contractInteractionEnabled?this.vetoContribution(e):window.alert("Only members can veto contributions. Please ask someone to set you up.")},openContributionDetails:function(e){this.router.transitionTo("dashboard.contributions.show",e)}}})
e.default=t})),define("kredits-web/components/contribution-list/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"6QjAzyse",block:'{"symbols":["contribution","kind","contributor","@selectedContributionId","@showQuickFilter","@loading"],"statements":[[6,[37,5],[[32,5]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"quick-filter"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[10,"label"],[14,0,"filter-contributor"],[12],[2,"\\n Contributor:\\n "],[10,"select"],[15,"onchange",[30,[36,0],[[32,0],[30,[36,8],[[32,0,["contributorId"]]],null]],[["value"],["target.value"]]]],[12],[2,"\\n "],[10,"option"],[14,2,""],[14,"selected",""],[12],[2,"all"],[13],[2,"\\n"],[6,[37,10],[[30,[36,9],[[30,[36,9],[[32,0,["contributorsActive"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"option"],[15,2,[32,3,["id"]]],[15,"selected",[30,[36,4],[[32,0,["contributorId"]],[32,3,["id"]]],null]],[12],[1,[32,3,["name"]]],[13],[2,"\\n"]],"parameters":[3]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"label"],[14,0,"filter-contribution-kind"],[12],[2,"\\n Kind:\\n "],[10,"select"],[15,"onchange",[30,[36,0],[[32,0],[30,[36,8],[[32,0,["contributionKind"]]],null]],[["value"],["target.value"]]]],[12],[2,"\\n "],[10,"option"],[14,2,""],[14,"selected",""],[12],[2,"all"],[13],[2,"\\n"],[6,[37,10],[[30,[36,9],[[30,[36,9],[[32,0,["contributionKinds"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"option"],[15,2,[32,2]],[15,"selected",[30,[36,4],[[32,0,["contributionKind"]],[32,2]],null]],[12],[1,[30,[36,7],[[32,2]],null]],[13],[2,"\\n"]],"parameters":[2]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"label"],[14,0,"filter-contribution-size"],[12],[2,"\\n "],[8,"input",[],[["@type","@checked"],["checkbox",[32,0,["hideSmallContributions"]]]],null],[2,"\\n Hide small contributions\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[10,"ul"],[15,0,[31,["item-list contribution-list ",[30,[36,5],[[32,6],"loading"],null]]]],[12],[2,"\\n"],[6,[37,10],[[30,[36,9],[[30,[36,9],[[32,0,["contributionsFiltered"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[11,"li"],[24,"role","button"],[16,"data-contribution-id",[32,1,["id"]]],[16,0,[31,[[30,[36,6],[[32,1]],null],[30,[36,5],[[30,[36,4],[[32,1,["id"]],[32,4]],null]," selected"],null]]]],[4,[38,0],[[32,0],"openContributionDetails",[32,1]],null],[12],[2,"\\n "],[10,"p"],[14,0,"meta"],[12],[2,"\\n "],[10,"span"],[14,0,"recipient"],[12],[8,"user-avatar",[],[["@contributor"],[[32,1,["contributor"]]]],null],[13],[2,"\\n "],[10,"span"],[15,0,[31,["category ",[32,1,["kind"]]]]],[12],[2,"("],[1,[32,1,["kind"]]],[2,")"],[13],[2,"\\n "],[10,"span"],[14,0,"title"],[12],[1,[32,1,["description"]]],[13],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"kredits-amount"],[12],[2,"\\n "],[10,"span"],[14,0,"amount"],[12],[1,[32,1,["amount"]]],[13],[10,"span"],[14,0,"symbol"],[12],[2,"₭S"],[13],[2,"\\n "],[13],[2,"\\n"],[6,[37,3],[[32,1,["vetoed"]]],null,[["default"],[{"statements":[[6,[37,3],[[30,[36,2],[[32,1]],null]],null,[["default"],[{"statements":[[2," "],[10,"p"],[14,0,"voting"],[12],[2,"\\n "],[1,[30,[36,1],null,[["type","class","value","click","disabled"],["button","button small danger","veto",[30,[36,0],[[32,0],"veto",[32,1,["id"]]],null],[32,1,["hasPendingChanges"]]]]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[1]}]]],[13]],"hasEval":false,"upvars":["action","input","is-confirmed-contribution","unless","eq","if","item-status","capitalize-string","mut","-track-array","each"]}',meta:{moduleName:"kredits-web/components/contribution-list/template.hbs"}})
e.default=t})),define("kredits-web/components/contributor-list/component",["exports","@glimmer/component"],(function(e,t){var n,r,o,i,u,a,s,c,l
function f(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function b(e,t){return(b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()
return function(){var n,r=v(e)
if(t){var o=v(this).constructor
n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments)
return y(this,n)}}function y(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined")
return h(e)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var w=(n=Ember.inject.service,r=Ember._tracked,o=Ember._tracked,i=Ember._action,u=Ember._action,a=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&b(e,t)})(i,e)
var t,n,r,o=m(i)
function i(){var e
d(this,i)
for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r]
return f(h(e=o.call.apply(o,[this].concat(n))),"router",s,h(e)),f(h(e),"selectedContributorId",c,h(e)),f(h(e),"showToplistOnly",l,h(e)),e}return t=i,(n=[{key:"contributorList",get:function(){return this.args.contributorList}},{key:"contributorTop10",get:function(){return this.contributorList?this.contributorList.slice(0,10):[]}},{key:"contributors",get:function(){return this.showToplistOnly?this.contributorTop10:this.contributorList}},{key:"hiddenContributorsAmount",get:function(){return this.contributorList.length-10}},{key:"showAllButtonText",get:function(){return"Show ".concat(this.hiddenContributorsAmount," more contributors")}},{key:"openContributorDetails",value:function(e){this.router.transitionTo("dashboard.contributors.show",e)}},{key:"showAllContributors",value:function(){this.showToplistOnly=!1}}])&&p(t.prototype,n),r&&p(t,r),Object.defineProperty(t,"prototype",{writable:!1}),i}(t.default),s=g(a.prototype,"router",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),c=g(a.prototype,"selectedContributorId",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return null}}),l=g(a.prototype,"showToplistOnly",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!0}}),g(a.prototype,"openContributorDetails",[i],Object.getOwnPropertyDescriptor(a.prototype,"openContributorDetails"),a.prototype),g(a.prototype,"showAllContributors",[u],Object.getOwnPropertyDescriptor(a.prototype,"showAllContributors"),a.prototype),a)
e.default=w})),define("kredits-web/components/contributor-list/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"Yoj4aGHA",block:'{"symbols":["c","@selectedContributorId","@showUnconfirmedKredits","@loading"],"statements":[[10,"table"],[15,0,[31,["contributor-list ",[30,[36,2],[[32,4],"loading"],null]]]],[12],[2,"\\n "],[10,"thead"],[12],[2,"\\n "],[13],[2,"\\n "],[10,"tbody"],[12],[2,"\\n"],[6,[37,5],[[30,[36,4],[[30,[36,4],[[32,0,["contributors"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"tr"],[14,"role","button"],[15,"onclick",[30,[36,0],[[32,0],"openContributorDetails",[32,1,["contributor"]]],null]],[15,0,[31,[[30,[36,2],[[30,[36,3],[[32,1,["contributor"]]],null],"current-user"],null]," ",[30,[36,2],[[30,[36,1],[[32,1,["contributor","id"]],[32,2]],null],"selected"],null]]]],[12],[2,"\\n "],[10,"td"],[14,0,"person"],[12],[2,"\\n "],[8,"user-avatar",[],[["@contributor"],[[32,1,["contributor"]]]],null],[2," "],[1,[32,1,["contributor","name"]]],[2,"\\n "],[13],[2,"\\n "],[10,"td"],[14,0,"kredits"],[12],[2,"\\n "],[10,"span"],[14,0,"amount"],[12],[2,"\\n"],[6,[37,2],[[32,3]],null,[["default","else"],[{"statements":[[2," "],[1,[32,1,["amountTotal"]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[1,[32,1,["amountConfirmed"]]],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"span"],[14,0,"symbol"],[12],[2,"₭S"],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[1]}]]],[6,[37,2],[[32,0,["showToplistOnly"]]],null,[["default"],[{"statements":[[2," "],[10,"tr"],[14,"role","button"],[15,"onclick",[30,[36,0],[[32,0],"showAllContributors"],null]],[12],[2,"\\n "],[10,"td"],[14,"colspan","2"],[12],[2,"\\n "],[1,[32,0,["showAllButtonText"]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["action","eq","if","is-current-user","-track-array","each"]}',meta:{moduleName:"kredits-web/components/contributor-list/template.hbs"}})
e.default=t})),define("kredits-web/components/contributor-list/component",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Component.extend({tagName:"",router:Ember.inject.service(),selectedContributorId:null,actions:{openContributorDetails:function(e){this.router.transitionTo("dashboard.contributors.show",e)}}})
e.default=t})),define("kredits-web/components/contributor-list/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"H19rOGuf",block:'{"symbols":["c","@selectedContributorId","@showUnconfirmedKredits","@loading","@contributorList"],"statements":[[10,"table"],[15,0,[31,["contributor-list ",[30,[36,2],[[32,4],"loading"],null]]]],[12],[2,"\\n "],[10,"thead"],[12],[2,"\\n "],[13],[2,"\\n "],[10,"tbody"],[12],[2,"\\n"],[6,[37,5],[[30,[36,4],[[30,[36,4],[[32,5]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"tr"],[14,"role","button"],[15,"onclick",[30,[36,0],[[32,0],"openContributorDetails",[32,1,["contributor"]]],null]],[15,0,[31,[[30,[36,2],[[30,[36,3],[[32,1,["contributor"]]],null],"current-user"],null]," ",[30,[36,2],[[30,[36,1],[[32,1,["contributor","id"]],[32,2]],null],"selected"],null]]]],[12],[2,"\\n "],[10,"td"],[14,0,"person"],[12],[2,"\\n "],[8,"user-avatar",[],[["@contributor"],[[32,1,["contributor"]]]],null],[2," "],[1,[32,1,["contributor","name"]]],[2,"\\n "],[13],[2,"\\n "],[10,"td"],[14,0,"kredits"],[12],[2,"\\n "],[10,"span"],[14,0,"amount"],[12],[2,"\\n"],[6,[37,2],[[32,3]],null,[["default","else"],[{"statements":[[2," "],[1,[32,1,["amountTotal"]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[1,[32,1,["amountConfirmed"]]],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"span"],[14,0,"symbol"],[12],[2,"₭S"],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[1]}]]],[2," "],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["action","eq","if","is-current-user","-track-array","each"]}',meta:{moduleName:"kredits-web/components/contributor-list/template.hbs"}})
e.default=t})),define("kredits-web/components/ember-chart",["exports","ember-cli-chart/components/ember-chart"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var n=t.default
e.default=n})),define("kredits-web/components/ember-flatpickr",["exports","ember-flatpickr/components/ember-flatpickr"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/components/expense-list/component",["exports","@glimmer/component"],(function(e,t){function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n<t.length;n++){var r=t[n]
@@ -240,7 +208,7 @@ e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,confi
var t,u,a,s=i(c)
function c(){return n(this,c),s.apply(this,arguments)}return t=c,(u=[{key:"showDeleteButton",get:function(){return!!this.args.deletable}}])&&r(t.prototype,u),a&&r(t,a),Object.defineProperty(t,"prototype",{writable:!1}),c}(t.default)
e.default=s})),define("kredits-web/components/expense-list/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"4IzRalHQ",block:'{"symbols":["expense","tag","@removeExpenseItem","@expenses"],"statements":[[10,"ul"],[14,0,"expense-list"],[12],[2,"\\n"],[6,[37,6],[[30,[36,5],[[30,[36,5],[[32,4]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"li"],[14,0,"expense-item"],[12],[2,"\\n "],[10,"h4"],[12],[2,"\\n "],[10,"span"],[14,0,"date"],[12],[1,[30,[36,2],[[32,1,["date"]]],null]],[2,":"],[13],[2,"\\n "],[10,"span"],[14,0,"title"],[12],[1,[32,1,["title"]]],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"amount"],[15,"title",[31,[[30,[36,3],[[32,1,["amountSats"]]],null]]]],[12],[2,"\\n "],[1,[30,[36,4],[[32,1,["amount"]],[32,1,["currency"]]],null]],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"description"],[12],[2,"\\n "],[1,[32,1,["description"]]],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"tags"],[12],[2,"\\n"],[6,[37,6],[[30,[36,5],[[30,[36,5],[[32,1,["tags"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"button"],[14,0,"small yellow"],[14,"role","none"],[14,4,"button"],[12],[2,"\\n "],[8,"icon-tag",[],[[],[]],null],[1,[32,2]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[2]}]]],[2," "],[13],[2,"\\n"],[6,[37,7],[[32,0,["showDeleteButton"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"actions"],[12],[2,"\\n "],[11,"button"],[24,0,"danger small"],[24,4,"button"],[4,[38,1],["click",[30,[36,0],[[32,3],[32,1]],null]],null],[12],[2,"delete"],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[1]}]]],[13],[2,"\\n"]],"hasEval":false,"upvars":["fn","on","fmt-date-localized","fmt-amount-sats-title","fmt-fiat-currency","-track-array","each","if"]}',meta:{moduleName:"kredits-web/components/expense-list/template.hbs"}})
var t=Ember.HTMLBars.template({id:"Vj8N2eKw",block:'{"symbols":["expense","tag","@removeExpenseItem","@expenses"],"statements":[[10,"ul"],[14,0,"expense-list"],[12],[2,"\\n"],[6,[37,5],[[30,[36,4],[[30,[36,4],[[32,4]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"li"],[14,0,"expense-item"],[12],[2,"\\n "],[10,"h4"],[12],[2,"\\n "],[10,"span"],[14,0,"date"],[12],[1,[30,[36,2],[[32,1,["date"]]],null]],[2,":"],[13],[2,"\\n "],[10,"span"],[14,0,"title"],[12],[1,[32,1,["title"]]],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"amount"],[12],[2,"\\n "],[1,[30,[36,3],[[32,1,["amount"]],[32,1,["currency"]]],null]],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"description"],[12],[2,"\\n "],[1,[32,1,["description"]]],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"tags"],[12],[2,"\\n"],[6,[37,5],[[30,[36,4],[[30,[36,4],[[32,1,["tags"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"button"],[14,0,"small yellow"],[14,"role","none"],[14,4,"button"],[12],[2,"\\n "],[8,"icon-tag",[],[[],[]],null],[1,[32,2]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[2]}]]],[2," "],[13],[2,"\\n"],[6,[37,6],[[32,0,["showDeleteButton"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"actions"],[12],[2,"\\n "],[11,"button"],[24,0,"danger small"],[24,4,"button"],[4,[38,1],["click",[30,[36,0],[[32,3],[32,1]],null]],null],[12],[2,"delete"],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[1]}]]],[13],[2,"\\n"]],"hasEval":false,"upvars":["fn","on","fmt-date-localized","fmt-fiat-currency","-track-array","each","if"]}',meta:{moduleName:"kredits-web/components/expense-list/template.hbs"}})
e.default=t})),define("kredits-web/components/external-account-link/component",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Component.extend({tagName:"",account:null,iconComponentName:Ember.computed("account.site",(function(){return this.account.site.match(/github|gitea|wiki|zoom/)?"icon-account-"+this.account.site.replace(/\./g,"-"):"icon-web-globe"}))})
e.default=t})),define("kredits-web/components/external-account-link/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -251,52 +219,30 @@ e.default=t})),define("kredits-web/components/loading-spinner/template",["export
var t=Ember.HTMLBars.template({id:"RDvW8Yf/",block:'{"symbols":[],"statements":[[10,"p"],[12],[2,"\\n "],[10,"svg"],[14,"xmlns","http://www.w3.org/2000/svg","http://www.w3.org/2000/xmlns/"],[14,"xmlns:xlink","http://www.w3.org/1999/xlink","http://www.w3.org/2000/xmlns/"],[14,"version","1.1"],[14,"x","0px"],[14,"y","0px"],[14,"viewBox","0 0 132 100"],[14,"enable-background","new 0 0 100 100"],[14,"xml:space","preserve","http://www.w3.org/XML/1998/namespace"],[12],[2,"\\n "],[10,"path"],[14,1,"path-comet"],[14,"d","M79.062,24.173L79.062,24.173l-0.021-0.011c-0.068-0.03-0.137-0.062-0.204-0.093L42.392,7.337\\n c0,0,3.065,14.104,4.458,18.019l0,0c0,0-41.754-12.481-46.85-13.67c1.67,6.52,30.607,62.492,30.607,62.492\\n c5.848,11.873,19.394,18.485,33.522,18.485c19.811,0,35.87-16.059,35.87-35.869C100,42.313,91.418,29.837,79.062,24.173z"],[12],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[13],[2,"\\n"],[10,"p"],[12],[2,"\\n Loading data...\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":[]}',meta:{moduleName:"kredits-web/components/loading-spinner/template.hbs"}})
e.default=t})),define("kredits-web/components/main-navigation-menu/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"3Bc8huBy",block:'{"symbols":[],"statements":[[10,"nav"],[14,1,"main-menu"],[12],[2,"\\n "],[10,"ul"],[12],[2,"\\n "],[10,"li"],[12],[8,"link-to",[],[["@route"],["dashboard"]],[["default"],[{"statements":[[2,"Dashboard"]],"parameters":[]}]]],[13],[2,"\\n "],[10,"li"],[12],[8,"link-to",[],[["@route"],["budget"]],[["default"],[{"statements":[[2,"Budget"]],"parameters":[]}]]],[13],[2,"\\n "],[10,"li"],[12],[8,"link-to",[],[["@route"],["about"]],[["default"],[{"statements":[[2,"About"]],"parameters":[]}]]],[13],[2,"\\n "],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":[]}',meta:{moduleName:"kredits-web/components/main-navigation-menu/template.hbs"}})
e.default=t})),define("kredits-web/components/reimbursement-item/component",["exports","@glimmer/component","kredits-web/config/environment","kredits-web/helpers/fmt-date-localized"],(function(e,t,n,r){var o,i,u,a,s,c,l
function f(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
e.default=t})),define("kredits-web/components/reimbursement-list/component",["exports","@glimmer/component","kredits-web/config/environment"],(function(e,t,n){var r,o,i,u,a,s
function c(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()
return function(){var n,r=h(e)
if(t){var o=h(this).constructor
return function(){var n,r=y(e)
if(t){var o=y(this).constructor
n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments)
return m(this,n)}}function m(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
return b(this,n)}}function b(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined")
return y(e)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t,n,r,o){var i={}
return m(e)}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var g=(o=Ember.inject.service,i=Ember._tracked,u=Ember._action,a=Ember._action,s=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)})(a,e)
var t,o,i,u=b(a)
function a(e,t){var n
return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),f(y(n=u.call(this,e,t)),"kredits",c,y(n)),f(y(n),"showExpenseDetails",l,y(n)),n.isUnconfirmed&&!n.isVetoed&&(n.showExpenseDetails=!0),n}return t=a,(o=[{key:"ipfsGatewayUrl",get:function(){return n.default.ipfs.gatewayUrl}},{key:"isConfirmed",get:function(){return this.args.reimbursement.confirmedAt-this.kredits.currentBlock<=0}},{key:"isUnconfirmed",get:function(){return!this.isConfirmed}},{key:"isVetoed",get:function(){return this.args.reimbursement.vetoed}},{key:"showVetoButton",get:function(){return this.isUnconfirmed&&this.kredits.currentUserIsCore}},{key:"showConfirmedIn",get:function(){return!this.isVetoed&&(this.showExpenseDetails||this.isUnconfirmed)}},{key:"expenses",get:function(){return this.args.reimbursement.expenses}},{key:"expensesDateRange",get:function(){var e=this.expenses.map((function(e){return e.date})).uniq().sort(),t=r.default.compute(e.firstObject)
return e.length>1&&(t+=" - "+r.default.compute(e.lastObject)),t}},{key:"toggleExpenseDetails",value:function(){this.showExpenseDetails=!this.showExpenseDetails}},{key:"veto",value:function(e){this.kredits.vetoReimbursement(e).then((function(e){console.debug("[controllers:budget] Veto submitted to chain: "+e.hash)}))}}])&&d(t.prototype,o),i&&d(t,i),Object.defineProperty(t,"prototype",{writable:!1}),a}(t.default),c=v(s.prototype,"kredits",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),l=v(s.prototype,"showExpenseDetails",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),v(s.prototype,"toggleExpenseDetails",[u],Object.getOwnPropertyDescriptor(s.prototype,"toggleExpenseDetails"),s.prototype),v(s.prototype,"veto",[a],Object.getOwnPropertyDescriptor(s.prototype,"veto"),s.prototype),s)
e.default=g}))
define("kredits-web/components/reimbursement-item/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"65M2haBn",block:'{"symbols":["@reimbursement"],"statements":[[10,"li"],[15,"data-reimbursement-id",[32,1,["id"]]],[15,0,[31,[[30,[36,3],[[32,1]],null]]]],[12],[2,"\\n "],[11,"p"],[24,0,"meta cursor-pointer"],[24,"role","button"],[4,[38,1],["click",[32,0,["toggleExpenseDetails"]]],null],[12],[2,"\\n "],[10,"span"],[14,0,"recipient"],[12],[2,"\\n "],[8,"user-avatar",[],[["@contributor"],[[32,1,["contributor"]]]],null],[2,"\\n "],[13],[2,"\\n "],[10,"span"],[14,0,"title"],[12],[2,"\\n Expenses covered by "],[1,[32,1,["contributor","name"]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"token-amount"],[12],[2,"\\n "],[10,"span"],[14,0,"amount"],[12],[2,"\\n "],[1,[30,[36,4],[[32,1,["amount"]]],null]],[13],[2," "],[10,"span"],[14,0,"symbol"],[12],[2,"BTC"],[13],[2,"\\n "],[13],[2,"\\n\\n"],[6,[37,5],[[32,0,["showExpenseDetails"]]],null,[["default"],[{"statements":[[2," "],[8,"expense-list",[],[["@expenses"],[[32,1,["expenses"]]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[10,"div"],[14,0,"meta"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n"],[6,[37,5],[[32,0,["showConfirmedIn"]]],null,[["default","else"],[{"statements":[[2," "],[8,"confirmed-in",[],[["@confirmedAtBlock"],[[32,1,["confirmedAt"]]]],null],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[6,[37,2],[[32,0,["isVetoed"]]],null,[["default"],[{"statements":[[1,[32,0,["expensesDateRange"]]]],"parameters":[]}]]],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[10,"a"],[15,6,[31,[[32,0,["ipfsGatewayUrl"]],"/",[32,1,["ipfsHash"]]]]],[14,0,"button small"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"\\n Inspect IPFS data\\n "],[13],[2,"\\n"],[6,[37,5],[[32,0,["showVetoButton"]]],null,[["default"],[{"statements":[[2," "],[11,"button"],[16,"disabled",[32,1,["vetoed"]]],[24,0,"button small danger"],[24,4,"button"],[4,[38,1],["click",[30,[36,0],[[32,0,["veto"]],[32,1,["id"]]],null]],null],[12],[2,"veto"],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["fn","on","unless","item-status","sats-to-btc","if"]}',meta:{moduleName:"kredits-web/components/reimbursement-item/template.hbs"}})
e.default=t})),define("kredits-web/components/reimbursement-list/component",["exports","@glimmer/component"],(function(e,t){var n,r,o,i,u
function a(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function s(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()
return function(){var n,r=b(e)
if(t){var o=b(this).constructor
n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments)
return d(this,n)}}function d(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined")
return p(e)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var h=(n=Ember.inject.service,r=Ember.computed.sort("args.items","itemSorting"),o=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)})(d,e)
var t,n,r,o=f(d)
function d(){var e
c(this,d)
var g=(r=Ember.inject.service,o=Ember.computed.sort("args.items","itemSorting"),i=Ember._action,u=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)})(u,e)
var t,r,o,i=p(u)
function u(){var e
l(this,u)
for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r]
return a(p(e=o.call.apply(o,[this].concat(n))),"kredits",i,p(e)),m(p(e),"itemSorting",Object.freeze(["pendingStatus:asc","id:desc"])),a(p(e),"itemsSorted",u,p(e)),e}return t=d,n&&s(t.prototype,n),r&&s(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}(t.default),i=y(o.prototype,"kredits",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),u=y(o.prototype,"itemsSorted",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),o)
e.default=h})),define("kredits-web/components/reimbursement-list/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"iEvKZZIl",block:'{"symbols":["item","@loading"],"statements":[[10,"ul"],[15,0,[31,["item-list collapsible spaced reimbursement-list ",[30,[36,0],[[32,2],"loading"],null]]]],[12],[2,"\\n"],[6,[37,2],[[30,[36,1],[[30,[36,1],[[32,0,["itemsSorted"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[8,"reimbursement-item",[],[["@reimbursement"],[[32,1]]],null],[2,"\\n"]],"parameters":[1]}]]],[13]],"hasEval":false,"upvars":["if","-track-array","each"]}',meta:{moduleName:"kredits-web/components/reimbursement-list/template.hbs"}})
return c(m(e=i.call.apply(i,[this].concat(n))),"kredits",a,m(e)),h(m(e),"itemSorting",Object.freeze(["pendingStatus:asc","id:desc"])),c(m(e),"itemsSorted",s,m(e)),e}return t=u,(r=[{key:"ipfsGatewayUrl",get:function(){return n.default.ipfs.gatewayUrl}},{key:"veto",value:function(e){this.kredits.vetoReimbursement(e).then((function(e){console.debug("[controllers:budget] Veto submitted to chain: "+e.hash)}))}}])&&f(t.prototype,r),o&&f(t,o),Object.defineProperty(t,"prototype",{writable:!1}),u}(t.default),a=v(u.prototype,"kredits",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),s=v(u.prototype,"itemsSorted",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),v(u.prototype,"veto",[i],Object.getOwnPropertyDescriptor(u.prototype,"veto"),u.prototype),u)
e.default=g}))
define("kredits-web/components/reimbursement-list/template",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"/SHVSc1V",block:'{"symbols":["reimbursement","@loading"],"statements":[[10,"ul"],[15,0,[31,["item-list spaced reimbursement-list ",[30,[36,4],[[32,2],"loading"],null]]]],[12],[2,"\\n"],[6,[37,6],[[30,[36,5],[[30,[36,5],[[32,0,["itemsSorted"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"li"],[15,"data-reimbursement-id",[32,1,["id"]]],[15,0,[31,[[30,[36,2],[[32,1]],null]]]],[12],[2,"\\n "],[10,"p"],[14,0,"meta"],[12],[2,"\\n "],[10,"span"],[14,0,"recipient"],[12],[2,"\\n "],[8,"user-avatar",[],[["@contributor"],[[32,1,["contributor"]]]],null],[2,"\\n "],[13],[2,"\\n "],[10,"span"],[14,0,"title"],[12],[2,"\\n Expenses covered by "],[1,[32,1,["contributor","name"]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"token-amount"],[12],[2,"\\n "],[10,"span"],[14,0,"amount"],[12],[2,"\\n "],[1,[30,[36,3],[[32,1,["amount"]]],null]],[13],[2," "],[10,"span"],[14,0,"symbol"],[12],[2,"BTC"],[13],[2,"\\n "],[13],[2,"\\n\\n "],[8,"expense-list",[],[["@expenses"],[[32,1,["expenses"]]]],null],[2,"\\n\\n "],[10,"div"],[14,0,"meta"],[12],[2,"\\n "],[10,"p"],[14,0,"confirmation-eta"],[12],[2,"\\n "],[8,"confirmed-in",[],[["@confirmedAtBlock"],[[32,1,["confirmedAt"]]]],null],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[10,"a"],[15,6,[31,[[32,0,["ipfsGatewayUrl"]],"/",[32,1,["ipfsHash"]]]]],[14,0,"button small"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"\\n Inspect IPFS data\\n "],[13],[2,"\\n"],[6,[37,4],[[32,0,["kredits","currentUserIsCore"]]],null,[["default"],[{"statements":[[2," "],[11,"button"],[16,"disabled",[32,1,["vetoed"]]],[24,0,"button small danger"],[24,4,"button"],[4,[38,1],["click",[30,[36,0],[[32,0,["veto"]],[32,1,["id"]]],null]],null],[12],[2,"veto"],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[1]}]]],[13]],"hasEval":false,"upvars":["fn","on","item-status","sats-to-btc","if","-track-array","each"]}',meta:{moduleName:"kredits-web/components/reimbursement-list/template.hbs"}})
e.default=t})),define("kredits-web/components/topbar-account-panel/component",["exports","@glimmer/component"],(function(e,t){var n,r,o,i,u,a,s,c,l
function f(e,t,n,r,o,i,u){try{var a=e[i](u),s=a.value}catch(c){return void n(c)}a.done?t(s):Promise.resolve(s).then(r,o)}function d(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function b(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
@@ -349,28 +295,28 @@ function d(){var e
u(this,d)
for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i]
return o(l(e=f.call.apply(f,[this].concat(n))),"kredits",r,l(e)),e}return t=d,n&&i(t.prototype,n),c&&i(t,c),Object.defineProperty(t,"prototype",{writable:!1}),t}()).prototype,p="kredits",b=[t],m={configurable:!0,enumerable:!0,writable:!0,initializer:null},h={},Object.keys(m).forEach((function(e){h[e]=m[e]})),h.enumerable=!!h.enumerable,h.configurable=!!h.configurable,("value"in h||h.initializer)&&(h.writable=!0),h=b.slice().reverse().reduce((function(e,t){return t(d,p,e)||e}),h),y&&void 0!==h.initializer&&(h.value=h.initializer?h.initializer.call(y):void 0,h.initializer=void 0),void 0===h.initializer&&(Object.defineProperty(d,p,h),h=null),r=h,n)
e.default=v})),define("kredits-web/controllers/budget",["exports"],(function(e){var t,n,r,o,i,u,a,s,c,l,f,d
function p(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
e.default=v})),define("kredits-web/controllers/budget",["exports"],(function(e){var t,n,r,o,i,u,a
function s(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function c(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function d(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()
return function(){var n,r=w(e)
if(t){var o=w(this).constructor
return function(){var n,r=m(e)
if(t){var o=m(this).constructor
n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments)
return v(this,n)}}function v(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
return p(this,n)}}function p(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined")
return g(e)}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function w(e){return(w=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function k(e,t,n,r,o){var i={}
return b(e)}function b(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function y(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var O=(t=Ember.inject.service,n=Ember.inject.service,r=Ember.computed.alias("kredits.reimbursementsUnconfirmed"),o=Ember.computed.alias("kredits.reimbursementsConfirmed"),i=Ember.computed.alias("kredits.currentUserIsCore"),u=Ember._action,s=k((a=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&y(e,t)})(i,Ember.Controller)
var t,n,r,o=h(i)
function i(){var e
b(this,i)
var h=(t=Ember.inject.service,n=Ember.computed.alias("kredits.reimbursementsUnconfirmed"),r=Ember.computed.alias("kredits.reimbursementsConfirmed"),i=y((o=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&f(e,t)})(p,Ember.Controller)
var t,n,r,o=d(p)
function p(){var e
l(this,p)
for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r]
return p(g(e=o.call.apply(o,[this].concat(n))),"kredits",s,g(e)),p(g(e),"router",c,g(e)),p(g(e),"reimbursementsUnconfirmed",l,g(e)),p(g(e),"reimbursementsConfirmed",f,g(e)),p(g(e),"currentUserIsCore",d,g(e)),e}return t=i,(n=[{key:"addReimbursement",value:function(){return this.kredits.currentUser?this.kredits.currentUserIsCore?void this.router.transitionTo("reimbursements.new"):(window.alert("Only core contributors can submit reimbursements."),!1):(window.alert("You need to connect your RSK account first."),!1)}}])&&m(t.prototype,n),r&&m(t,r),Object.defineProperty(t,"prototype",{writable:!1}),i}()).prototype,"kredits",[t],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),c=k(a.prototype,"router",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),l=k(a.prototype,"reimbursementsUnconfirmed",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),f=k(a.prototype,"reimbursementsConfirmed",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),d=k(a.prototype,"currentUserIsCore",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k(a.prototype,"addReimbursement",[u],Object.getOwnPropertyDescriptor(a.prototype,"addReimbursement"),a.prototype),a)
e.default=O})),define("kredits-web/controllers/contributions/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
return s(b(e=o.call.apply(o,[this].concat(n))),"kredits",i,b(e)),s(b(e),"reimbursementsUnconfirmed",u,b(e)),s(b(e),"reimbursementsConfirmed",a,b(e)),e}return t=p,n&&c(t.prototype,n),r&&c(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}()).prototype,"kredits",[t],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),u=y(o.prototype,"reimbursementsUnconfirmed",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),a=y(o.prototype,"reimbursementsConfirmed",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),o)
e.default=h})),define("kredits-web/controllers/contributions/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Controller.extend({kredits:Ember.inject.service(),queryParams:["contributorId","kind","amount"],contributors:Ember.computed.alias("kredits.contributors"),minedContributors:Ember.computed.filterBy("contributors","id"),contributorsSorting:Object.freeze(["name:asc"]),sortedContributors:Ember.computed.sort("minedContributors","contributorsSorting"),actions:{save:function(e){var t=this,n=this.contributors.findBy("id",e.contributorId)
return e.contributorIpfsHash=n.ipfsHash,this.kredits.addContribution(e).then((function(e){return t.transitionToRoute("index"),e}))}}})
e.default=t})),define("kredits-web/controllers/contributions/resubmit",["exports","kredits-web/controllers/contributions/new"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -380,7 +326,7 @@ var t=Ember.Controller.extend({kredits:Ember.inject.service(),actions:{save:func
e.default=t})),define("kredits-web/controllers/contributors/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Controller.extend({kredits:Ember.inject.service(),actions:{save:function(e){return this.kredits.addContributor(e)}}})
e.default=t})),define("kredits-web/controllers/dashboard",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Controller.extend({kredits:Ember.inject.service(),showDetailsPane:!1,selectedContributorId:null,selectedContributionId:null,currentBlock:Ember.computed.alias("kredits.currentBlock"),contributions:Ember.computed.alias("kredits.contributions"),contributionsConfirmed:Ember.computed.alias("kredits.contributionsConfirmed"),contributionsUnconfirmed:Ember.computed.alias("kredits.contributionsUnconfirmed"),contributionsSorting:Object.freeze(["date:desc","time:desc","id:desc"]),contributionsUnconfirmedSorted:Ember.computed.sort("contributionsUnconfirmed","contributionsSorting"),contributionsConfirmedSorted:Ember.computed.sort("contributionsConfirmed","contributionsSorting"),kreditsByContributor:Ember.computed.alias("kredits.kreditsByContributor"),kreditsToplistSorting:Ember.computed("showUnconfirmedKredits",(function(){return this.showUnconfirmedKredits?["amountTotal:desc"]:["amountConfirmed:desc"]})),kreditsToplist:Ember.computed("kreditsByContributor",(function(){return this.kreditsByContributor.filter((function(e){return e.amountTotal>0}))})),kreditsToplistSorted:Ember.computed.sort("kreditsToplist","kreditsToplistSorting"),showUnconfirmedKredits:!0,hideUnconfirmedKredits:Ember.computed.not("showUnconfirmedKredits"),showQuickFilterUnconfirmed:!1,showQuickFilterConfirmed:!1,showFullContributionSync:Ember.computed.gt("kredits.missingHistoricContributionsCount",0),actions:{vetoContribution:function(e){this.kredits.veto(e).then((function(e){console.debug("[controllers:index] Veto submitted to chain: "+e.hash)}))},toggleQuickFilterUnconfirmed:function(){this.toggleProperty("showQuickFilterUnconfirmed")},toggleQuickFilterConfirmed:function(){this.toggleProperty("showQuickFilterConfirmed")}}})
var t=Ember.Controller.extend({kredits:Ember.inject.service(),showDetailsPane:!1,selectedContributorId:null,selectedContributionId:null,currentBlock:Ember.computed.alias("kredits.currentBlock"),contributions:Ember.computed.alias("kredits.contributions"),contributionsConfirmed:Ember.computed.alias("kredits.contributionsConfirmed"),contributionsUnconfirmed:Ember.computed.alias("kredits.contributionsUnconfirmed"),contributionsSorting:Object.freeze(["date:desc","time:desc","id:desc"]),contributionsUnconfirmedSorted:Ember.computed.sort("contributionsUnconfirmed","contributionsSorting"),contributionsConfirmedSorted:Ember.computed.sort("contributionsConfirmed","contributionsSorting"),kreditsByContributor:Ember.computed.alias("kredits.kreditsByContributor"),kreditsToplistSorting:Ember.computed("showUnconfirmedKredits",(function(){return this.showUnconfirmedKredits?["amountTotal:desc"]:["amountConfirmed:desc"]})),kreditsToplist:Ember.computed.sort("kreditsByContributor","kreditsToplistSorting"),showUnconfirmedKredits:!0,hideUnconfirmedKredits:Ember.computed.not("showUnconfirmedKredits"),showQuickFilterUnconfirmed:!1,showQuickFilterConfirmed:!1,showFullContributionSync:Ember.computed.gt("kredits.missingHistoricContributionsCount",0),actions:{vetoContribution:function(e){this.kredits.veto(e).then((function(e){console.debug("[controllers:index] Veto submitted to chain: "+e.hash)}))},toggleQuickFilterUnconfirmed:function(){this.toggleProperty("showQuickFilterUnconfirmed")},toggleQuickFilterConfirmed:function(){this.toggleProperty("showQuickFilterConfirmed")}}})
e.default=t})),define("kredits-web/controllers/dashboard/contributions/show",["exports","kredits-web/config/environment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var n=Ember.Controller.extend({ipfsGatewayUrl:Ember.computed((function(){return t.default.ipfs.gatewayUrl}))})
e.default=n})),define("kredits-web/controllers/dashboard/contributors/show",["exports","kredits-web/config/environment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -441,10 +387,7 @@ for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n]
return r}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var r=Ember.Helper.extend({compute:function(e){var n=t(e,1)[0]
return n.charAt(0).toUpperCase()+n.slice(1)}})
e.default=r})),define("kredits-web/helpers/eq",["exports","ember-truth-helpers/helpers/equal"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"equal",{enumerable:!0,get:function(){return t.equal}})})),define("kredits-web/helpers/fmt-amount-sats-title",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Helper.helper((function(e){var t=e[0]
return"number"==typeof t&&t>0?"".concat(t," sats"):""}))
e.default=t})),define("kredits-web/helpers/fmt-crypto-currency",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
e.default=r})),define("kredits-web/helpers/eq",["exports","ember-truth-helpers/helpers/equal"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"equal",{enumerable:!0,get:function(){return t.equal}})})),define("kredits-web/helpers/fmt-crypto-currency",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Helper.helper((function(e){var t,n=e[0]
switch(e[1]){case"RBTC":t=n/1e18
break
@@ -453,13 +396,13 @@ e.default=t})),define("kredits-web/helpers/fmt-date-localized",["exports","kredi
var n=Ember.Helper.helper((function(e){var n=new Date(e),r=(0,t.default)()
return new Intl.DateTimeFormat(r).format(n)}))
e.default=n})),define("kredits-web/helpers/fmt-fiat-currency",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Helper.helper((function(e){var t=navigator.language||navigator.userLanguage,n=e[0],r=e[1]||"EUR"
return"BTC"===r?"BTC ".concat(n):new Intl.NumberFormat(t,{style:"currency",currency:r,currencyDisplay:"code"}).format(e[0])}))
var t=Ember.Helper.helper((function(e){var t=navigator.language||navigator.userLanguage
return new Intl.NumberFormat(t,{style:"currency",currency:e[1]||"EUR",currencyDisplay:"code"}).format(e[0])}))
e.default=t})),define("kredits-web/helpers/fmt-number",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Helper.helper((function(e){var t=navigator.language||navigator.userLanguage
return e.toLocaleString(t)}))
e.default=t})),define("kredits-web/helpers/gt",["exports","ember-truth-helpers/helpers/gt"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"gt",{enumerable:!0,get:function(){return t.gt}})}))
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}define("kredits-web/helpers/gte",["exports","ember-truth-helpers/helpers/gte"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"gte",{enumerable:!0,get:function(){return t.gte}})})),define("kredits-web/helpers/is-after",["exports","ember-moment/helpers/is-after"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/is-array",["exports","ember-truth-helpers/helpers/is-array"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"isArray",{enumerable:!0,get:function(){return t.isArray}})})),define("kredits-web/helpers/is-before",["exports","ember-moment/helpers/is-before"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/is-between",["exports","ember-moment/helpers/is-between"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/is-confirmed-contribution",["exports"],(function(e){function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]
e.default=t})),define("kredits-web/helpers/gt",["exports","ember-truth-helpers/helpers/gt"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"gt",{enumerable:!0,get:function(){return t.gt}})})),define("kredits-web/helpers/gte",["exports","ember-truth-helpers/helpers/gte"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"gte",{enumerable:!0,get:function(){return t.gte}})})),define("kredits-web/helpers/is-after",["exports","ember-moment/helpers/is-after"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/is-array",["exports","ember-truth-helpers/helpers/is-array"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"isArray",{enumerable:!0,get:function(){return t.isArray}})}))
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}define("kredits-web/helpers/is-before",["exports","ember-moment/helpers/is-before"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/is-between",["exports","ember-moment/helpers/is-between"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/is-confirmed-contribution",["exports"],(function(e){function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]
if(null==n)return
var r,o,i=[],u=!0,a=!1
try{for(n=n.call(e);!(u=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);u=!0);}catch(s){a=!0,o=s}finally{try{u||null==n.return||n.return()}finally{if(a)throw o}}return i}(e,t)||function(e,t){if(!e)return
@@ -501,8 +444,8 @@ this.setupRecompute(n)
var r=[]
return n.vetoed?r.push("vetoed"):n.confirmedAt>this.currentBlock?r.push("unconfirmed"):r.push("confirmed"),n.hasPendingChanges&&r.push("pending"),r.join(" ")},destroy:function(){this.teardown&&this.teardown(),this._super.apply(this,arguments)},setupRecompute:function(e){var t=this
this.teardown&&this.teardown(),e.addObserver("vetoed",this,this.triggerRecompute),e.addObserver("confirmedAt",this,this.triggerRecompute),e.addObserver("currentBlock",this,this.triggerRecompute),e.addObserver("hasPendingChanges",this,this.triggerRecompute),this.teardown=function(){e.removeObserver("vetoed",t,t.triggerRecompute),e.removeObserver("confirmedAt",t,t.triggerRecompute),e.removeObserver("currentBlock",t,t.triggerRecompute),e.removeObserver("hasPendingChanges",t,t.triggerRecompute)}},triggerRecompute:function(){Ember.run.once(this,this.recompute)}})
e.default=r})),define("kredits-web/helpers/lt",["exports","ember-truth-helpers/helpers/lt"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"lt",{enumerable:!0,get:function(){return t.lt}})})),define("kredits-web/helpers/lte",["exports","ember-truth-helpers/helpers/lte"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"lte",{enumerable:!0,get:function(){return t.lte}})})),define("kredits-web/helpers/moment-add",["exports","ember-moment/helpers/moment-add"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-calendar",["exports","ember-moment/helpers/moment-calendar"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-diff",["exports","ember-moment/helpers/moment-diff"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-duration",["exports","ember-moment/helpers/moment-duration"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-format",["exports","ember-moment/helpers/moment-format"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-from-now",["exports","ember-moment/helpers/moment-from-now"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-from",["exports","ember-moment/helpers/moment-from"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-subtract",["exports","ember-moment/helpers/moment-subtract"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-to-date",["exports","ember-moment/helpers/moment-to-date"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-to-now",["exports","ember-moment/helpers/moment-to-now"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-to",["exports","ember-moment/helpers/moment-to"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-unix",["exports","ember-moment/helpers/unix"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})}))
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}define("kredits-web/helpers/moment",["exports","ember-moment/helpers/moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/not-eq",["exports","ember-truth-helpers/helpers/not-equal"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"notEqualHelper",{enumerable:!0,get:function(){return t.notEqualHelper}})})),define("kredits-web/helpers/not",["exports","ember-truth-helpers/helpers/not"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"not",{enumerable:!0,get:function(){return t.not}})})),define("kredits-web/helpers/now",["exports","ember-moment/helpers/now"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/or",["exports","ember-truth-helpers/helpers/or"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"or",{enumerable:!0,get:function(){return t.or}})})),define("kredits-web/helpers/perform",["exports","ember-concurrency/helpers/perform"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/promise-all",["exports","ember-promise-helpers/helpers/promise-all"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/promise-hash",["exports","ember-promise-helpers/helpers/promise-hash"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/promise-rejected-reason",["exports","ember-promise-helpers/helpers/promise-rejected-reason"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/sats-to-btc",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
e.default=r})),define("kredits-web/helpers/lt",["exports","ember-truth-helpers/helpers/lt"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"lt",{enumerable:!0,get:function(){return t.lt}})})),define("kredits-web/helpers/lte",["exports","ember-truth-helpers/helpers/lte"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"lte",{enumerable:!0,get:function(){return t.lte}})})),define("kredits-web/helpers/moment-add",["exports","ember-moment/helpers/moment-add"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-calendar",["exports","ember-moment/helpers/moment-calendar"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-diff",["exports","ember-moment/helpers/moment-diff"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-duration",["exports","ember-moment/helpers/moment-duration"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-format",["exports","ember-moment/helpers/moment-format"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-from-now",["exports","ember-moment/helpers/moment-from-now"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-from",["exports","ember-moment/helpers/moment-from"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-subtract",["exports","ember-moment/helpers/moment-subtract"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-to-date",["exports","ember-moment/helpers/moment-to-date"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-to-now",["exports","ember-moment/helpers/moment-to-now"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-to",["exports","ember-moment/helpers/moment-to"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment-unix",["exports","ember-moment/helpers/unix"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/moment",["exports","ember-moment/helpers/moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/not-eq",["exports","ember-truth-helpers/helpers/not-equal"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"notEqualHelper",{enumerable:!0,get:function(){return t.notEqualHelper}})})),define("kredits-web/helpers/not",["exports","ember-truth-helpers/helpers/not"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"not",{enumerable:!0,get:function(){return t.not}})}))
function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}define("kredits-web/helpers/now",["exports","ember-moment/helpers/now"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/or",["exports","ember-truth-helpers/helpers/or"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"or",{enumerable:!0,get:function(){return t.or}})})),define("kredits-web/helpers/perform",["exports","ember-concurrency/helpers/perform"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/promise-all",["exports","ember-promise-helpers/helpers/promise-all"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/promise-hash",["exports","ember-promise-helpers/helpers/promise-hash"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/promise-rejected-reason",["exports","ember-promise-helpers/helpers/promise-rejected-reason"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/sats-to-btc",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Helper.helper((function(e){return e/1e8}))
e.default=t})),define("kredits-web/helpers/task",["exports","ember-concurrency/helpers/task"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/unix",["exports","ember-moment/helpers/unix"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("kredits-web/helpers/utc",["exports","ember-moment/helpers/utc"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"utc",{enumerable:!0,get:function(){return t.utc}})})),define("kredits-web/helpers/xor",["exports","ember-truth-helpers/helpers/xor"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"xor",{enumerable:!0,get:function(){return t.xor}})})),define("kredits-web/initializers/app-version",["exports","ember-cli-app-version/initializer-factory","kredits-web/config/environment"],(function(e,t,n){var r,o
Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,n.default.APP&&(r=n.default.APP.name,o=n.default.APP.version)
@@ -669,15 +612,15 @@ function d(){var e
i(this,d)
for(var t=arguments.length,n=new Array(t),u=0;u<t;u++)n[u]=arguments[u]
return o(l(e=f.call.apply(f,[this].concat(n))),"kredits",r,l(e)),e}return t=d,(n=[{key:"afterModel",value:function(){this.kredits.contributionsNeedSync&&Ember.run.schedule("afterRender",this.kredits.syncContributions,this.kredits.syncContributions.perform)}}])&&u(t.prototype,n),c&&u(t,c),Object.defineProperty(t,"prototype",{writable:!1}),d}()).prototype,p="kredits",b=[t],m={configurable:!0,enumerable:!0,writable:!0,initializer:null},h={},Object.keys(m).forEach((function(e){h[e]=m[e]})),h.enumerable=!!h.enumerable,h.configurable=!!h.configurable,("value"in h||h.initializer)&&(h.writable=!0),h=b.slice().reverse().reduce((function(e,t){return t(d,p,e)||e}),h),y&&void 0!==h.initializer&&(h.value=h.initializer?h.initializer.call(y):void 0,h.initializer=void 0),void 0===h.initializer&&(Object.defineProperty(d,p,h),h=null),r=h,n)
e.default=v}))
define("kredits-web/routes/dashboard/contributions/show",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
e.default=v})),define("kredits-web/routes/dashboard/contributions/show",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Route.extend({kredits:Ember.inject.service(),contributions:Ember.computed.alias("kredits.contributions"),model:function(e){return this.contributions.findBy("id",parseInt(e.id))},setupController:function(e,t){this._super(e,t),this.controllerFor("dashboard").setProperties({showDetailsPane:!0,selectedContributionId:t.id})},deactivate:function(){this.controllerFor("dashboard").setProperties({showDetailsPane:!1,selectedContributionId:null})}})
e.default=t})),define("kredits-web/routes/dashboard/contributors/show",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Route.extend({kredits:Ember.inject.service(),contributors:Ember.computed.alias("kredits.contributors"),model:function(e){var t=this.contributors.findBy("id",e.id)
return t||this.kredits.fetchContributor(e.id)},setupController:function(e,t){this._super(e,t),this.controllerFor("dashboard").setProperties({showDetailsPane:!0,selectedContributorId:t.id})},deactivate:function(){this.controllerFor("dashboard").setProperties({showDetailsPane:!1,selectedContributorId:null})}})
e.default=t})),define("kredits-web/routes/index",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.Route.extend({redirect:function(){this.transitionTo("dashboard")}})
e.default=t})),define("kredits-web/routes/reimbursements/new",["exports"],(function(e){function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n<t.length;n++){var r=t[n]
e.default=t}))
define("kredits-web/routes/reimbursements/new",["exports"],(function(e){function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
@@ -767,7 +710,7 @@ if(void 0!==t)throw new TypeError("Derived constructors may only return object o
return w(e)}function w(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var j=(r=Ember.inject.service,o=Ember._tracked,i=Ember._tracked,a=_((u=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
var x=(r=Ember.inject.service,o=Ember._tracked,i=Ember._tracked,a=_((u=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)})(d,Ember.Service)
var t,r,o,i,u,l=v(d)
function d(){var e
@@ -780,51 +723,45 @@ return e.next=6,Promise.all(t).then((function(){a.balancesLoaded=!0})).catch((fu
case 6:case"end":return e.stop()}}),e)}))},{key:"fetchBalance",value:(u=p(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch(t).then((function(e){return e.json()})))
case 1:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)})},{key:"processBalance",value:(i=p(regeneratorRuntime.mark((function e(t,n){var r,o
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.exchangeRates.fetchRates()
case 2:r=navigator.language||navigator.userLanguage,o=t.confirmed_balance/1e8*this.exchangeRates.USD,t.balanceUSD=Math.round(o).toLocaleString(r),this.balances.pushObject(f(f({},t),{token:{icon:"/img/".concat(n.icon),symbol:n.symbol,description:n.description}}))
case 2:r=navigator.language||navigator.userLanguage,o=t.confirmed_balance/1e8*this.exchangeRates.btcusd,t.balanceUSD=Math.round(o).toLocaleString(r),this.balances.pushObject(f(f({},t),{token:{icon:"/img/".concat(n.icon),symbol:n.symbol,description:n.description}}))
case 6:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})}])&&y(t.prototype,r),o&&y(t,o),Object.defineProperty(t,"prototype",{writable:!1}),d}()).prototype,"exchangeRates",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),s=_(u.prototype,"balancesLoaded",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return!1}}),c=_(u.prototype,"balances",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return Ember.A([])}}),_(u.prototype,"fetchBalances",[t.task],Object.getOwnPropertyDescriptor(u.prototype,"fetchBalances"),u.prototype),u)
e.default=j})),define("kredits-web/services/exchange-rates",["exports","kredits-web/config/environment"],(function(e,t){var n,r,o,i,u,a,s
function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
e.default=x})),define("kredits-web/services/exchange-rates",["exports","kredits-web/config/environment"],(function(e,t){var n,r,o,i,u
function a(e,t,n,r){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(r):void 0})}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var r=t[n]
r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1
if(Reflect.construct.sham)return!1
if("function"==typeof Proxy)return!0
try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()
return function(){var n,r=h(e)
if(t){var o=h(this).constructor
return function(){var n,r=b(e)
if(t){var o=b(this).constructor
n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments)
return m(this,n)}}function m(e,t){if(t&&("object"===c(t)||"function"==typeof t))return t
return d(this,n)}}function d(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t
if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined")
return y(e)}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}function g(e,t,n,r,o,i,u){try{var a=e[i](u),s=a.value}catch(c){return void n(c)}a.done?t(s):Promise.resolve(s).then(r,o)}function w(e){return function(){var t=this,n=arguments
return p(e)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
return e}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function m(e,t,n,r,o){var i={}
return Object.keys(r).forEach((function(e){i[e]=r[e]})),i.enumerable=!!i.enumerable,i.configurable=!!i.configurable,("value"in i||i.initializer)&&(i.writable=!0),i=n.slice().reverse().reduce((function(n,r){return r(e,t,n)||n}),i),o&&void 0!==i.initializer&&(i.value=i.initializer?i.initializer.call(o):void 0,i.initializer=void 0),void 0===i.initializer&&(Object.defineProperty(e,t,i),i=null),i}function y(e,t,n,r,o,i,u){try{var a=e[i](u),s=a.value}catch(c){return void n(c)}a.done?t(s):Promise.resolve(s).then(r,o)}function h(e){return function(){var t=this,n=arguments
return new Promise((function(r,o){var i=e.apply(t,n)
function u(e){g(i,r,o,u,a,"next",e)}function a(e){g(i,r,o,u,a,"throw",e)}u(void 0)}))}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var k="".concat(t.default.corsProxy,"https://www.bitstamp.net/api/v2")
function O(e){return _.apply(this,arguments)}function _(){return(_=w(regeneratorRuntime.mark((function e(t){var n
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("".concat(k,"/ticker/").concat(t,"/")).then((function(e){return e.json()}))
function u(e){y(i,r,o,u,a,"next",e)}function a(e){y(i,r,o,u,a,"throw",e)}u(void 0)}))}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var v="".concat(t.default.corsProxy,"https://www.bitstamp.net/api/v2")
function g(e){return w.apply(this,arguments)}function w(){return(w=h(regeneratorRuntime.mark((function e(t){var n
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("".concat(v,"/ticker/").concat(t,"/")).then((function(e){return e.json()}))
case 3:return n=e.sent,e.abrupt("return",parseFloat(n.vwap))
case 7:return e.prev=7,e.t0=e.catch(0),console.error("Could not fetch exchange rate from Bitstamp:",e.t0),e.abrupt("return",0)
case 11:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}var j=(n=Ember._tracked,r=Ember._tracked,o=Ember._tracked,u=v((i=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)})(h,Ember.Service)
var t,n,r,o,i,m=b(h)
function h(){var e
f(this,h)
case 11:case"end":return e.stop()}}),e,null,[[0,7]])})))).apply(this,arguments)}var k=(n=Ember._tracked,r=Ember._tracked,i=m((o=function(e){(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function")
e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)})(b,Ember.Service)
var t,n,r,o,d=f(b)
function b(){var e
s(this,b)
for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r]
return l(y(e=m.call.apply(m,[this].concat(n))),"EUR",u,y(e)),l(y(e),"USD",a,y(e)),l(y(e),"historic",s,y(e)),e}return t=h,(n=[{key:"exchangeRatesLoaded",get:function(){return 0!==this.EUR&&0!==this.USD}},{key:"fetchRates",value:(i=w(regeneratorRuntime.mark((function e(){var t,n=arguments
return a(p(e=d.call.apply(d,[this].concat(n))),"btceur",i,p(e)),a(p(e),"btcusd",u,p(e)),e}return t=b,(n=[{key:"exchangeRatesLoaded",get:function(){return 0!==this.btceur&&0!==this.btcusd}},{key:"fetchRates",value:(o=h(regeneratorRuntime.mark((function e(){var t,n=arguments
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.length>0&&void 0!==n[0]?n[0]:"bitstamp",!this.exchangeRatesLoaded){e.next=3
break}return e.abrupt("return")
case 3:e.t0=t,e.next="bitstamp"===e.t0?6:12
break
case 6:return e.next=8,O("btceur")
case 8:return this.EUR=e.sent,e.next=11,O("btcusd")
case 11:this.USD=e.sent
case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"fetchHistoricRates",value:(o=w(regeneratorRuntime.mark((function e(t){var n,r
return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("object"!==c(this.historic[t])){e.next=4
break}return e.abrupt("return",this.historic[t])
case 4:return n="".concat("https://storage.kosmos.org/kosmos/public/btc-price","/").concat(t),e.prev=5,e.next=8,fetch(n).then((function(e){return e.json()}))
case 8:return r=e.sent,this.historic[t]=r,e.abrupt("return",r)
case 13:e.prev=13,e.t0=e.catch(5),console.error(e.t0),Promise.reject(e.t0)
case 17:case"end":return e.stop()}}),e,this,[[5,13]])}))),function(e){return o.apply(this,arguments)})}])&&d(t.prototype,n),r&&d(t,r),Object.defineProperty(t,"prototype",{writable:!1}),h}()).prototype,"EUR",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),a=v(i.prototype,"USD",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),s=v(i.prototype,"historic",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return{}}}),i)
e.default=j})),define("kredits-web/services/kredits",["exports","ethers","@kredits/contracts","ember-concurrency","kredits-web/utils/group-by","kredits-web/utils/process-contributor-data","kredits-web/utils/process-contribution-data","kredits-web/utils/process-reimbursement-data","kredits-web/utils/format-kredits","kredits-web/utils/switch-network","kredits-web/config/environment","kredits-web/models/contributor","kredits-web/models/contribution","kredits-web/models/reimbursement"],(function(e,t,n,r,o,i,u,a,s,c,l,f,d,p){function b(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]
case 6:return e.next=8,g("btceur")
case 8:return this.btceur=e.sent,e.next=11,g("btcusd")
case 11:this.btcusd=e.sent
case 12:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})}])&&c(t.prototype,n),r&&c(t,r),Object.defineProperty(t,"prototype",{writable:!1}),b}()).prototype,"btceur",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),u=m(o.prototype,"btcusd",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return 0}}),o)
e.default=k})),define("kredits-web/services/kredits",["exports","ethers","@kredits/contracts","ember-concurrency","kredits-web/utils/group-by","kredits-web/utils/process-contributor-data","kredits-web/utils/process-contribution-data","kredits-web/utils/process-reimbursement-data","kredits-web/utils/format-kredits","kredits-web/utils/switch-network","kredits-web/config/environment","kredits-web/models/contributor","kredits-web/models/contribution","kredits-web/models/reimbursement"],(function(e,t,n,r,o,i,u,a,s,c,l,f,d,p){function b(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||y(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]
if(!n){if(Array.isArray(e)||(n=y(e))||t&&e&&"number"==typeof e.length){n&&(e=n)
var r=0,o=function(){}
return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1
@@ -1080,7 +1017,7 @@ var t=Ember.HTMLBars.template({id:"rH2U9nfi",block:'{"symbols":[],"statements":[
e.default=t})),define("kredits-web/templates/application",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"7nDDmrRX",block:'{"symbols":[],"statements":[[10,"header"],[14,1,"topbar"],[12],[2,"\\n "],[10,"h1"],[12],[8,"link-to",[],[["@route"],["dashboard"]],[["default"],[{"statements":[[2,"Kredits"]],"parameters":[]}]]],[13],[2,"\\n "],[8,"topbar-account-panel",[],[[],[]],null],[2,"\\n"],[13],[2,"\\n\\n"],[8,"main-navigation-menu",[],[[],[]],null],[2,"\\n\\n"],[1,[30,[36,1],[[30,[36,0],null,null]],null]],[2,"\\n"]],"hasEval":false,"upvars":["-outlet","component"]}',meta:{moduleName:"kredits-web/templates/application.hbs"}})
e.default=t})),define("kredits-web/templates/budget",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"4yoV8trg",block:'{"symbols":[],"statements":[[10,"main"],[14,1,"budget"],[12],[2,"\\n\\n "],[10,"div"],[14,1,"aside"],[12],[2,"\\n "],[10,"section"],[14,1,"funds"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Community funds"],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"budget-balances",[],[[],[]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,1,"content"],[12],[2,"\\n"],[6,[37,1],[[32,0,["reimbursementsUnconfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"expenses-unconfirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Proposed Reimbursements"],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[11,"button"],[24,0,"button small green"],[24,"title","Submit a reimbursement"],[24,4,"button"],[4,[38,0],["click",[32,0,["addReimbursement"]]],null],[12],[2,"\\n add\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"reimbursement-list",[],[["@items"],[[32,0,["reimbursementsUnconfirmed"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,1],[[32,0,["reimbursementsConfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"expenses-confirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Confirmed Reimbursements"],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[11,"button"],[24,0,"button small green"],[24,"title","Submit a reimbursement"],[24,4,"button"],[4,[38,0],["click",[32,0,["addReimbursement"]]],null],[12],[2,"\\n add\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"reimbursement-list",[],[["@items"],[[32,0,["reimbursementsConfirmed"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,1,"empty"],[12],[2,"\\n "],[13],[2,"\\n\\n"],[13]],"hasEval":false,"upvars":["on","if"]}',meta:{moduleName:"kredits-web/templates/budget.hbs"}})
var t=Ember.HTMLBars.template({id:"NF9wJ3hK",block:'{"symbols":[],"statements":[[10,"main"],[14,1,"budget"],[12],[2,"\\n\\n "],[10,"div"],[14,1,"aside"],[12],[2,"\\n "],[3," <section id=\\"main&#45;nav\\"> "],[2,"\\n "],[3," <header> "],[2,"\\n "],[3," <h2>Budget</h2> "],[2,"\\n "],[3," </header> "],[2,"\\n "],[3," <div class=\\"content\\"> "],[2,"\\n "],[3," <ul> "],[2,"\\n "],[3," <li> "],[2,"\\n "],[3," <LinkTo @route=\\"budget.expenses\\">Expenses</LinkTo> "],[2,"\\n "],[3," </li> "],[2,"\\n "],[3," <li> "],[2,"\\n "],[3," <a href=\\"#\\">Rewards</a> "],[2,"\\n "],[3," </li> "],[2,"\\n "],[3," </ul> "],[2,"\\n "],[3," </div> "],[2,"\\n "],[3," </section> "],[2,"\\n\\n "],[10,"section"],[14,1,"funds"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Community funds"],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"budget-balances",[],[[],[]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,1,"content"],[12],[2,"\\n"],[6,[37,0],[[32,0,["reimbursementsUnconfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"expenses-unconfirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Proposed Reimbursements"],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small green"]],[["@route","@title"],["reimbursements.new","Submit a reimbursement"]],[["default"],[{"statements":[[2,"add"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"reimbursement-list",[],[["@items"],[[32,0,["reimbursementsUnconfirmed"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,0],[[32,0,["reimbursementsConfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"expenses-confirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Confirmed Reimbursements"],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small green"]],[["@route","@title"],["reimbursements.new","Submit a reimbursement"]],[["default"],[{"statements":[[2,"add"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"reimbursement-list",[],[["@items"],[[32,0,["reimbursementsConfirmed"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,1,"empty"],[12],[2,"\\n "],[13],[2,"\\n\\n"],[13]],"hasEval":false,"upvars":["if"]}',meta:{moduleName:"kredits-web/templates/budget.hbs"}})
e.default=t})),define("kredits-web/templates/budget/expenses",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"GPyv0u4G",block:'{"symbols":[],"statements":[[1,[30,[36,1],[[30,[36,0],null,null]],null]]],"hasEval":false,"upvars":["-outlet","component"]}',meta:{moduleName:"kredits-web/templates/budget/expenses.hbs"}})
e.default=t})),define("kredits-web/templates/components/icon-account-gitea-kosmos-org",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -1106,15 +1043,15 @@ var t=Ember.HTMLBars.template({id:"clbPf+4y",block:'{"symbols":[],"statements":[
e.default=t})),define("kredits-web/templates/contributors/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"zY+qbRPK",block:'{"symbols":[],"statements":[[10,"main"],[14,0,"center-column"],[12],[2,"\\n\\n "],[10,"section"],[14,1,"add-contributor"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Add contributor profile"],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"add-contributor",[],[["@save"],[[30,[36,0],[[32,0],"save"],null]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["action"]}',meta:{moduleName:"kredits-web/templates/contributors/new.hbs"}})
e.default=t})),define("kredits-web/templates/dashboard",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"tObgk0F7",block:'{"symbols":[],"statements":[[10,"main"],[14,1,"dashboard"],[15,0,[30,[36,2],[[32,0,["showDetailsPane"]],"with-details"],null]],[12],[2,"\\n\\n "],[10,"div"],[14,1,"stats"],[12],[2,"\\n "],[10,"section"],[14,1,"people"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Contributors"],[13],[2,"\\n"],[6,[37,2],[[32,0,["kredits","hasAccounts"]]],null,[["default"],[{"statements":[[2," "],[10,"nav"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small green"]],[["@route","@title"],["contributors.new","Add contributor profile"]],[["default"],[{"statements":[[2,"add"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"contributor-list",[],[["@contributorList","@showUnconfirmedKredits","@selectedContributorId","@loading"],[[32,0,["kreditsToplistSorted"]],[32,0,["showUnconfirmedKredits"]],[32,0,["selectedContributorId"]],[32,0,["kredits","syncContributors","isRunning"]]]],null],[2,"\\n\\n "],[10,"p"],[14,0,"stats"],[12],[2,"\\n "],[10,"span"],[14,0,"number"],[12],[1,[30,[36,4],[[32,0,["kredits","totalKreditsEarned"]]],null]],[13],[2," kredits confirmed and issued to\\n "],[10,"span"],[14,0,"number"],[12],[1,[32,0,["contributorsWithKredits","length"]]],[13],[2," contributors\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"stats"],[12],[2,"\\n "],[8,"input",[[24,1,"hide-unnconfirmed-kredits"]],[["@type","@checked"],["checkbox",[32,0,["showUnconfirmedKredits"]]]],null],[2,"\\n "],[10,"label"],[14,"for","hide-unnconfirmed-kredits"],[12],[2,"Show unconfirmed kredits in toplist"],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n"],[6,[37,2],[[32,0,["contributionsConfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"contributions-by-type"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Contributions by type"],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"chart-contributions-by-type",[],[["@contributions"],[[32,0,["contributions"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,1,"contributions"],[12],[2,"\\n"],[6,[37,2],[[32,0,["contributionsUnconfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"contributions-unconfirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"\\n Latest Contributions\\n "],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[10,"button"],[15,"onclick",[30,[36,3],[[32,0],"toggleQuickFilterUnconfirmed"],null]],[15,0,[31,["small ",[30,[36,2],[[32,0,["showQuickFilterUnconfirmed"]],"active"],null]]]],[14,4,"button"],[12],[2,"\\n filter\\n "],[13],[2,"\\n"],[6,[37,2],[[32,0,["kredits","hasAccounts"]]],null,[["default"],[{"statements":[[2," "],[8,"link-to",[[24,0,"button small green"]],[["@route","@title"],["contributions.new","Submit a contribution"]],[["default"],[{"statements":[[2,"add"]],"parameters":[]}]]],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n"],[2," "],[8,"contribution-list",[],[["@contributions","@vetoContribution","@contractInteractionEnabled","@selectedContributionId","@showQuickFilter","@loading"],[[32,0,["contributionsUnconfirmedSorted"]],[30,[36,3],[[32,0],"vetoContribution"],null],[32,0,["kredits","hasAccounts"]],[32,0,["selectedContributionId"]],[32,0,["showQuickFilterUnconfirmed"]],[32,0,["kredits","syncContributions","isRunning"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,2],[[32,0,["contributionsConfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"contributions-confirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Confirmed Contributions"],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[10,"button"],[15,"onclick",[30,[36,3],[[32,0],"toggleQuickFilterConfirmed"],null]],[15,0,[31,["small ",[30,[36,2],[[32,0,["showQuickFilterConfirmed"]],"active"],null]]]],[14,4,"button"],[12],[2,"\\n filter\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"contribution-list",[],[["@contributions","@vetoContribution","@selectedContributionId","@showQuickFilter"],[[32,0,["contributionsConfirmedSorted"]],[30,[36,3],[[32,0],"vetoContribution"],null],[32,0,["selectedContributionId"]],[32,0,["showQuickFilterConfirmed"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]Line truncated
e.default=t}))
define("kredits-web/templates/dashboard/contributions/show",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"MmUvWH35",block:'{"symbols":[],"statements":[[10,"main"],[14,1,"dashboard"],[15,0,[30,[36,2],[[32,0,["showDetailsPane"]],"with-details"],null]],[12],[2,"\\n\\n "],[10,"div"],[14,1,"stats"],[12],[2,"\\n "],[10,"section"],[14,1,"people"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Contributors"],[13],[2,"\\n"],[6,[37,2],[[32,0,["kredits","hasAccounts"]]],null,[["default"],[{"statements":[[2," "],[10,"nav"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small green"]],[["@route","@title"],["contributors.new","Add contributor profile"]],[["default"],[{"statements":[[2,"add"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"contributor-list",[],[["@contributorList","@showUnconfirmedKredits","@selectedContributorId","@loading"],[[32,0,["kreditsToplist"]],[32,0,["showUnconfirmedKredits"]],[32,0,["selectedContributorId"]],[32,0,["kredits","syncContributors","isRunning"]]]],null],[2,"\\n\\n "],[10,"p"],[14,0,"stats"],[12],[2,"\\n "],[10,"span"],[14,0,"number"],[12],[1,[30,[36,4],[[32,0,["kredits","totalKreditsEarned"]]],null]],[13],[2," kredits confirmed and issued to\\n "],[10,"span"],[14,0,"number"],[12],[1,[32,0,["contributorsWithKredits","length"]]],[13],[2," contributors\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"stats"],[12],[2,"\\n "],[8,"input",[[24,1,"hide-unnconfirmed-kredits"]],[["@type","@checked"],["checkbox",[32,0,["showUnconfirmedKredits"]]]],null],[2,"\\n "],[10,"label"],[14,"for","hide-unnconfirmed-kredits"],[12],[2,"Show unconfirmed kredits in toplist"],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n"],[6,[37,2],[[32,0,["contributionsConfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"contributions-by-type"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Contributions by type"],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"chart-contributions-by-type",[],[["@contributions"],[[32,0,["contributions"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,1,"contributions"],[12],[2,"\\n"],[6,[37,2],[[32,0,["contributionsUnconfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"contributions-unconfirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"\\n Latest Contributions\\n "],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[10,"button"],[15,"onclick",[30,[36,3],[[32,0],"toggleQuickFilterUnconfirmed"],null]],[15,0,[31,["small ",[30,[36,2],[[32,0,["showQuickFilterUnconfirmed"]],"active"],null]]]],[14,4,"button"],[12],[2,"\\n filter\\n "],[13],[2,"\\n"],[6,[37,2],[[32,0,["kredits","hasAccounts"]]],null,[["default"],[{"statements":[[2," "],[8,"link-to",[[24,0,"button small green"]],[["@route","@title"],["contributions.new","Submit a contribution"]],[["default"],[{"statements":[[2,"add"]],"parameters":[]}]]],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n"],[2," "],[8,"contribution-list",[],[["@contributions","@vetoContribution","@contractInteractionEnabled","@selectedContributionId","@showQuickFilter","@loading"],[[32,0,["contributionsUnconfirmedSorted"]],[30,[36,3],[[32,0],"vetoContribution"],null],[32,0,["kredits","hasAccounts"]],[32,0,["selectedContributionId"]],[32,0,["showQuickFilterUnconfirmed"]],[32,0,["kredits","syncContributions","isRunning"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n"],[6,[37,2],[[32,0,["contributionsConfirmed"]]],null,[["default"],[{"statements":[[2," "],[10,"section"],[14,1,"contributions-confirmed"],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Confirmed Contributions"],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[10,"button"],[15,"onclick",[30,[36,3],[[32,0],"toggleQuickFilterConfirmed"],null]],[15,0,[31,["small ",[30,[36,2],[[32,0,["showQuickFilterConfirmed"]],"active"],null]]]],[14,4,"button"],[12],[2,"\\n filter\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"contribution-list",[],[["@contributions","@vetoContribution","@selectedContributionId","@showQuickFilter"],[[32,0,["contributionsConfirmedSorted"]],[30,[36,3],[[32,0],"vetoContribution"],null],[32,0,["selectedContributionId"]],[32,0,["showQuickFilterConfirmed"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[Line truncated
e.default=t})),define("kredits-web/templates/dashboard/contributions/show",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"DufwIN5Z",block:'{"symbols":[],"statements":[[10,"section"],[14,1,"contribution-details"],[15,0,[30,[36,0],[[32,0,["model","vetoed"]],"vetoed"],null]],[12],[2,"\\n "],[10,"header"],[14,0,"with-nav"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Contribution #"],[1,[32,0,["model","id"]]],[13],[2,"\\n "],[10,"nav"],[12],[2,"\\n "],[10,"span"],[14,0,"amount"],[12],[1,[32,0,["model","amount"]]],[13],[2," \\n "],[10,"span"],[14,0,"symbol"],[12],[2,"₭S"],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[10,"p"],[14,0,"who-what-when"],[12],[2,"\\n "],[10,"span"],[14,0,"contributor"],[12],[2,"\\n "],[8,"user-avatar",[],[["@contributor"],[[32,0,["model","contributor"]]]],null],[2,"\\n "],[8,"link-to",[],[["@route","@model"],["dashboard.contributors.show",[32,0,["model","contributor"]]]],[["default"],[{"statements":[[1,[32,0,["model","contributor","name"]]]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n contributed\\n "],[10,"span"],[14,0,"date"],[15,"title",[32,0,["model","iso8601Date"]]],[12],[1,[30,[36,1],[[32,0,["model","iso8601Date"]]],null]],[13],[2,":\\n "],[13],[2,"\\n "],[10,"h3"],[12],[1,[32,0,["model","description"]]],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n Kind: "],[1,[32,0,["model","kind"]]],[2,"\\n "],[10,"br"],[12],[13],[2,"Status: "],[1,[30,[36,2],[[32,0,["model"]]],null]],[2,"\\n "],[13],[2,"\\n"],[6,[37,0],[[32,0,["model","url"]]],null,[["default"],[{"statements":[[2," "],[10,"p"],[12],[2,"\\n "],[10,"a"],[15,6,[32,0,["model","url"]]],[15,"title",[32,0,["model","description"]]],[14,0,"button"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"\\n Open URL\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[6,[37,0],[[32,0,["model","vetoed"]]],null,[["default"],[{"statements":[[2," "],[10,"div"],[14,0,"hint vetoed"],[12],[2,"\\n "],[10,"div"],[14,0,"icon"],[12],[2,"\\n "],[8,"icon-warning",[],[[],[]],null],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n This contribution has been vetoed, meaning no\\n kredits will be issued.\\n "],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small green"]],[["@route","@model"],["contributions.resubmit",[32,0,["model"]]]],[["default"],[{"statements":[[2,"Re-submit contribution …"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"actions"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small"]],[["@route","@model"],["contributions.resubmit",[32,0,["model"]]]],[["default"],[{"statements":[[2,"Copy & edit as new"]],"parameters":[]}]]],[2,"\\n"],[6,[37,0],[[32,0,["model","ipfsHash"]]],null,[["default"],[{"statements":[[2," "],[10,"a"],[15,6,[31,[[32,0,["ipfsGatewayUrl"]],"/",[32,0,["model","ipfsHash"]]]]],[14,0,"button small"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"\\n Inspect IPFS data\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[13],[2,"\\n"],[13]],"hasEval":false,"upvars":["if","moment-from","item-status"]}',meta:{moduleName:"kredits-web/templates/dashboard/contributions/show.hbs"}})
e.default=t})),define("kredits-web/templates/dashboard/contributors/show",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"uzAAqojK",block:'{"symbols":["account"],"statements":[[10,"section"],[14,1,"contributor-profile"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[8,"user-avatar",[],[["@contributor","@size"],[[32,0,["model"]],"medium"]],null],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[10,"h2"],[12],[1,[32,0,["model","name"]]],[13],[2,"\\n "],[10,"p"],[14,0,"role"],[12],[1,[32,0,["roleName"]]],[13],[2,"\\n\\n "],[10,"ul"],[14,0,"external-accounts"],[12],[2,"\\n"],[6,[37,1],[[30,[36,0],[[30,[36,0],[[32,0,["model","accounts"]]],null]],null]],null,[["default"],[{"statements":[[2," "],[10,"li"],[12],[2,"\\n "],[8,"external-account-link",[],[["@account"],[[32,1]]],null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[1]}]]],[6,[37,2],[[32,0,["model","url"]]],null,[["default"],[{"statements":[[2," "],[10,"li"],[12],[2,"\\n "],[10,"a"],[15,6,[32,0,["model","url"]]],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[14,"title","Website"],[12],[2,"\\n "],[10,"span"],[14,0,"site"],[12],[2,"Web"],[13],[2,"\\n "],[8,"icon-web-globe",[],[[],[]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n "],[10,"div"],[14,0,"actions"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button green"]],[["@route","@query"],["contributions.new",[30,[36,3],null,[["contributorId"],[[32,0,["model","id"]]]]]]],[["default"],[{"statements":[[2,"♥ Give kredits"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"actions"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[10,"a"],[15,6,[31,["https://explorer.testnet.rsk.co/address/",[32,0,["model","account"]]]]],[14,0,"button small"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"Inspect Rootstock transactions"],[13],[2,"\\n"],[6,[37,2],[[32,0,["model","ipfsHash"]]],null,[["default"],[{"statements":[[2," "],[10,"a"],[15,6,[31,[[32,0,["ipfsGatewayUrl"]],"/",[32,0,["model","ipfsHash"]]]]],[14,0,"button small"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"Inspect IPFS profile"],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[8,"link-to",[[24,0,"button small"]],[["@route","@model"],["contributors.edit",[32,0,["model"]]]],[["default"],[{"statements":[[2,"Edit profile"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["-track-array","each","if","hash"]}',meta:{moduleName:"kredits-web/templates/dashboard/contributors/show.hbs"}})
e.default=t})),define("kredits-web/templates/reimbursements/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"4ZGew5Lo",block:'{"symbols":[],"statements":[[10,"main"],[14,0,"center-column"],[12],[2,"\\n\\n "],[10,"section"],[14,1,"add-item"],[12],[2,"\\n "],[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Submit a Reimbursement"],[13],[2,"\\n "],[13],[2,"\\n\\n "],[10,"div"],[14,0,"content"],[12],[2,"\\n "],[8,"add-reimbursement",[],[["@attributes"],[[32,0,["model","params"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n\\n"],[13]],"hasEval":false,"upvars":[]}',meta:{moduleName:"kredits-web/templates/reimbursements/new.hbs"}})
e.default=t})),define("kredits-web/templates/signup",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
e.default=t}))
define("kredits-web/templates/signup",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"vyvqw+Xa",block:'{"symbols":[],"statements":[[10,"main"],[14,0,"center-column"],[12],[2,"\\n "],[10,"section"],[14,1,"signup"],[12],[2,"\\n "],[1,[30,[36,1],[[30,[36,0],null,null]],null]],[2,"\\n "],[13],[2,"\\n"],[13]],"hasEval":false,"upvars":["-outlet","component"]}',meta:{moduleName:"kredits-web/templates/signup.hbs"}})
e.default=t})),define("kredits-web/templates/signup/account",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"juAngjy3",block:'{"symbols":[],"statements":[[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Complete your contributor profile"],[13],[2,"\\n"],[13],[2,"\\n"],[10,"div"],[14,0,"content text-lg"],[12],[2,"\\n "],[10,"p"],[14,0,"mb-8"],[12],[2,"\\n Kredits allow you to to earn rewards for your contributions, in the form of\\n dynamic open-source grants. As a regular contributor, you can also take\\n part in the community\'s project governance and finances.\\n "],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n In order to interact with the system you will need a\\n "],[10,"a"],[14,6,"https://rootstock.io"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"Rootstock"],[13],[2,"\\n wallet/account.\\n "],[13],[2,"\\n "],[10,"form"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n "],[10,"label"],[12],[2,"\\n Rootstock address:"],[10,"br"],[12],[13],[2,"\\n "],[8,"input",[[24,"placeholder","0xF18E631Ea191aE4ebE70046Fcb01a436554421BA4"],[16,0,[30,[36,0],[[32,0,["isValidEthAccount"]],"valid",""],null]]],[["@type","@value"],["text",[32,0,["accountAddress"]]]],null],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[11,"button"],[16,"disabled",[32,0,["signupButtonDisabled"]]],[24,4,"button"],[4,[38,2],["click",[30,[36,1],[[32,0,["completeSignup"]]],null]],null],[12],[2,"\\n Complete my profile\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[13]],"hasEval":false,"upvars":["if","fn","on"]}',meta:{moduleName:"kredits-web/templates/signup/account.hbs"}})
@@ -1122,14 +1059,13 @@ e.default=t})),define("kredits-web/templates/signup/complete",["exports"],(funct
var t=Ember.HTMLBars.template({id:"hc80mylW",block:'{"symbols":[],"statements":[[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Welcome aboard!"],[13],[2,"\\n"],[13],[2,"\\n"],[10,"div"],[14,0,"content text-lg text-center"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n Congratulations. Your initial profile is now complete.\\n "],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n Why not say hi to your fellow contributors\\n "],[10,"a"],[14,6,"https://wiki.kosmos.org/Main_Page#Community_.2F_Getting_in_touch_.2F_Getting_involved"],[14,"target","_blank"],[14,"rel","noopener noreferrer"],[12],[2,"in one of our chat rooms"],[13],[2,"?.\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[8,"link-to",[[24,0,"button small"]],[["@route"],["dashboard"]],[["default"],[{"statements":[[2,"Return to dashboard"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n"],[13]],"hasEval":false,"upvars":[]}',meta:{moduleName:"kredits-web/templates/signup/complete.hbs"}})
e.default=t})),define("kredits-web/templates/signup/index",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
var t=Ember.HTMLBars.template({id:"NAvcexMu",block:'{"symbols":[],"statements":[[10,"header"],[12],[2,"\\n "],[10,"h2"],[12],[2,"Create your contributor profile"],[13],[2,"\\n"],[13],[2,"\\n"],[10,"div"],[14,0,"content text-lg"],[12],[2,"\\n "],[10,"p"],[12],[2,"\\n You have already contributed to a Kosmos project, or you are interested\\n in contributing in the near future? Fantastic!\\n "],[13],[2,"\\n "],[10,"p"],[12],[2,"\\n In order to earn kredits for your contributions, you will need a\\n registered contributor profile. The quickest way to register is by\\n connecting one of the following accounts:\\n "],[13],[2,"\\n "],[10,"p"],[14,0,"actions"],[12],[2,"\\n "],[10,"button"],[15,"onclick",[30,[36,0],[[32,0],"connectGithub"],null]],[14,0,"icon"],[14,4,"button"],[12],[2,"\\n "],[8,"icon-account-github-com",[],[[],[]],null],[2,"\\n Connect GitHub\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[13],[2,"\\n"]],"hasEval":false,"upvars":["action"]}',meta:{moduleName:"kredits-web/templates/signup/index.hbs"}})
e.default=t})),define("kredits-web/utils/btc-conversions",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.btcToSats=function(e){return Math.round(1e8*e)},e.floatToBtc=function(e){return Number(e.toFixed(8))},e.satsToBtc=function(e){return Math.round(e/1e8*1e8)/1e8}})),define("kredits-web/utils/format-kredits",["exports","ethers"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.default.utils.formatEther(e)
e.default=t})),define("kredits-web/utils/format-kredits",["exports","ethers"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.default.utils.formatEther(e)
n.decimals||(r=parseInt(r).toString())
return r}})),define("kredits-web/utils/get-locale",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language}})),define("kredits-web/utils/group-by",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e,t){var n=Ember.A(),r=e
r&&r.forEach((function(e){var r=e[t],o=n.findBy("value",r)
Ember.isPresent(o)?o.items.push(e):(o={property:t,value:r,items:[e]},n.push(o))}))
return n}})),define("kredits-web/utils/is-valid-amount",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var t=parseFloat(e)
return!Number.isNaN(t)&&t>0}})),define("kredits-web/utils/iso-date-is-today",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var t=(new Date).toISOString().split("T")[0]
return e===t}})),define("kredits-web/utils/process-contribution-data",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={}
return!Number.isNaN(t)&&t>0}})),define("kredits-web/utils/process-contribution-data",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={}
e.confirmedAtBlock&&"function"==typeof e.confirmedAtBlock.toNumber?n.confirmedAt=e.confirmedAtBlock.toNumber():"undefined"!==e.confirmedAt&&(n.confirmedAt=e.confirmedAt)
var r=["id","contributorId","amount","vetoed","ipfsHash","kind","description","url","date","time","pendingTx"]
r.forEach((function(t){n[t]=e[t]})),t.includeDetails&&(n.details=e.details)
@@ -1149,6 +1085,6 @@ case 13:e.next=16
break
case 15:console.warn("Failed to switch chains:",e.t0.message)
case 16:case"end":return e.stop()}}),e,null,[[3,8]])})))).apply(this,arguments)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return o.apply(this,arguments)}})),define("kredits-web/config/environment",[],(function(){try{var e="kredits-web/config/environment",t=document.querySelector('meta[name="'+e+'"]').getAttribute("content"),n={default:JSON.parse(decodeURIComponent(t))}
return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(r){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("kredits-web/app").default.create({name:"kredits-web",version:"2.3.0+66e1adc7"})
return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(r){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("kredits-web/app").default.create({name:"kredits-web",version:"2.1.1+5c9fbf50"})
//# sourceMappingURL=kredits-web-f0250e6a12a36c02218f33e52ba1ae39.map
//# sourceMappingURL=kredits-web-7c993a63fe709fe25b6d0b201adef2c2.map
@@ -0,0 +1 @@
{"version":3,"sources":["vendor/ember-cli/app-prefix.js","kredits-web/app.js","kredits-web/components/add-expense-item/component.js","kredits-web/components/add-reimbursement/component.js","kredits-web/components/budget-balances/component.js","kredits-web/components/confirmed-in/component.js","kredits-web/components/expense-list/component.js","kredits-web/components/reimbursement-list/component.js","kredits-web/components/topbar-account-panel/component.js","kredits-web/controllers/application.js","kredits-web/controllers/budget.js","kredits-web/controllers/signup/account.js","kredits-web/controllers/signup/index.js","kredits-web/component-managers/glimmer.js","kredits-web/components/add-contribution/component.js","kredits-web/components/add-contribution/template.js","kredits-web/components/add-contributor/component.js","kredits-web/components/add-contributor/template.js","kredits-web/components/add-expense-item/template.js","kredits-web/components/add-reimbursement/template.js","kredits-web/components/budget-balances/template.js","kredits-web/components/chart-contributions-by-type/component.js","kredits-web/components/chart-contributions-by-type/template.js","kredits-web/components/confirmed-in/template.js","kredits-web/components/contribution-list/component.js","kredits-web/components/contribution-list/template.js","kredits-web/components/contributor-list/component.js","kredits-web/components/contributor-list/template.js","kredits-web/components/ember-chart.js","kredits-web/components/ember-flatpickr.js","kredits-web/components/expense-list/template.js","kredits-web/components/external-account-link/component.js","kredits-web/components/external-account-link/template.js","kredits-web/components/loading-spinner/component.js","kredits-web/components/loading-spinner/template.js","kredits-web/components/main-navigation-menu/template.js","kredits-web/components/reimbursement-list/template.js","kredits-web/components/topbar-account-panel/template.js","kredits-web/components/user-avatar/component.js","kredits-web/components/user-avatar/template.js","kredits-web/controllers/contributions/new.js","kredits-web/controllers/contributions/resubmit.js","kredits-web/controllers/contributors/edit.js","kredits-web/controllers/contributors/new.js","kredits-web/controllers/dashboard.js","kredits-web/controllers/dashboard/contributions/show.js","kredits-web/controllers/dashboard/contributors/show.js","kredits-web/helpers/and.js","kredits-web/helpers/app-version.js","kredits-web/helpers/await.js","kredits-web/helpers/cancel-all.js","kredits-web/helpers/capitalize-string.js","kredits-web/helpers/eq.js","kredits-web/helpers/fmt-crypto-currency.js","kredits-web/helpers/fmt-date-localized.js","kredits-web/helpers/fmt-fiat-currency.js","kredits-web/helpers/fmt-number.js","kredits-web/helpers/gt.js","kredits-web/helpers/gte.js","kredits-web/helpers/is-after.js","kredits-web/helpers/is-array.js","kredits-web/router.js","kredits-web/routes/about.js","kredits-web/routes/application.js","kredits-web/routes/budget.js","kredits-web/routes/budget/expenses.js","kredits-web/routes/contributions/new.js","kredits-web/routes/dashboard.js","kredits-web/routes/reimbursements/new.js","kredits-web/helpers/is-before.js","kredits-web/helpers/is-between.js","kredits-web/helpers/is-confirmed-contribution.js","kredits-web/helpers/is-current-user.js","kredits-web/helpers/is-empty.js","kredits-web/helpers/is-equal.js","kredits-web/helpers/is-fulfilled.js","kredits-web/helpers/is-pending.js","kredits-web/helpers/is-rejected.js","kredits-web/helpers/is-same-or-after.js","kredits-web/helpers/is-same-or-before.js","kredits-web/helpers/is-same.js","kredits-web/helpers/item-status.js","kredits-web/helpers/lt.js","kredits-web/helpers/lte.js","kredits-web/helpers/moment-add.js","kredits-web/helpers/moment-calendar.js","kredits-web/helpers/moment-diff.js","kredits-web/helpers/moment-duration.js","kredits-web/helpers/moment-format.js","kredits-web/helpers/moment-from-now.js","kredits-web/helpers/moment-from.js","kredits-web/helpers/moment-subtract.js","kredits-web/helpers/moment-to-date.js","kredits-web/helpers/moment-to-now.js","kredits-web/helpers/moment-to.js","kredits-web/helpers/moment-unix.js","kredits-web/helpers/moment.js","kredits-web/helpers/not-eq.js","kredits-web/helpers/not.js","kredits-web/routes/signup/account.js","kredits-web/services/browser-cache.js","kredits-web/services/community-funds.js","kredits-web/services/exchange-rates.js","kredits-web/helpers/now.js","kredits-web/helpers/or.js","kredits-web/helpers/perform.js","kredits-web/helpers/promise-all.js","kredits-web/helpers/promise-hash.js","kredits-web/helpers/promise-rejected-reason.js","kredits-web/helpers/sats-to-btc.js","kredits-web/helpers/task.js","kredits-web/helpers/unix.js","kredits-web/helpers/utc.js","kredits-web/helpers/xor.js","kredits-web/initializers/app-version.js","kredits-web/initializers/container-debug-adapter.js","kredits-web/initializers/ember-concurrency.js","kredits-webLine truncated
@@ -0,0 +1 @@
@charset "UTF-8";main#about,main#budget,main#dashboard{width:100%;display:grid;grid-row-gap:2rem}a,section h2{color:#68d7fb}*{margin:0;padding:0;box-sizing:border-box}:active,:focus,:hover{outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}body{margin-bottom:10rem;background-image:linear-gradient(to bottom,rgba(22,21,40,.4),rgba(0,0,0,.75)),url(/img/bg-947d3bf6bb15a1a3b07afcba4c307690.jpg);background-repeat:none;background-attachment:fixed}main{padding:1rem 2rem}main#dashboard{grid-template-areas:"stats" "contributions"}main#about,main#budget{grid-template-areas:"aside" "content"}main.center-column{display:flex;flex-direction:column;align-items:center}main.center-column section{width:600px;max-width:100%}main.center-column section header{text-align:center}@media (max-width:600px){main{padding:1rem}main div#content section:first-of-type{margin-top:0}}main section .content a{font-size:inherit}main section .content.text-lg p{font-size:1.35rem;margin-bottom:2rem;line-height:150%}main section .content.text-center{text-align:center}main section .content p.actions{text-align:center;padding-top:2rem}main section.text h2{margin:4rem 0 2rem}main section.text h2:first-of-type{margin-top:0}main section.text p{font-size:1.35rem;margin-bottom:2rem;line-height:150%}@media (min-width:550px){main#about,main#budget,main#dashboard.with-details{grid-column-gap:3rem;grid-template-columns:2fr 4fr 2fr}main#dashboard{grid-column-gap:4rem;grid-row-gap:2rem;grid-template-columns:2fr 4fr;grid-template-areas:"stats contributions"}main#dashboard.with-details{grid-template-areas:"stats contributions details"}main#about,main#budget{grid-template-areas:"aside content empty"}}main section{margin-bottom:5rem}main section:first-of-type{margin-top:2rem}main section header{margin-bottom:3rem}main section header.with-nav{display:grid;grid-template-columns:auto 5rem;grid-template-areas:"title" "actions"}main section header h2{display:inline-block}main section header nav{display:flex;flex-direction:row;align-items:center;justify-content:flex-end}@media (max-width:600px){main section{margin-bottom:5rem}main section header{margin-bottom:2rem}}main section .mb-4{margin-bottom:1rem}main section .mb-8,ul.item-list.spaced>li{margin-bottom:2rem}body,html{font-family:"Open Sans",sans-serif;font-weight:300;font-size:12px;color:#fff}@media screen and (min-width:900px){body{background-size:cover}}button,h1,h2,h3,h4,h5,input{font-family:"Open Sans",sans-serif;font-size:1rem;font-weight:300}section h2{font-size:1.5rem}section#people .content p.stats{margin-bottom:1rem;font-size:1rem;color:#fff;text-align:center}section#people .content p.stats span.number{font-weight:600}section#contributions-by-type .chart{width:50%;margin-left:auto;margin-right:auto}@media (max-width:600px){section#contributions-by-type .chart{width:75%}}@media (min-width:550px){section h2{font-size:2rem}}.button,button,input[type=submit]{display:inline-block;padding:.6rem 2rem;background-color:rgba(22,21,40,.6);border:1px solid #161528;border-radius:3px;color:#68d7fb;font-weight:500;text-decoration:none;text-transform:uppercase;cursor:pointer;letter-spacing:.1em;-webkit-appearance:none}.button+.button,.button+button,.button+input[type=submit],button+.button,button+button,button+input[type=submit],input[type=submit]+.button,input[type=submit]+button,input[type=submit]+input[type=submit]{margin-left:.5rem}.button:hover,button:hover,input[type=submit]:hover{background-color:rgba(22,21,40,.8)}.button.active,.button:active,.button:focus,button.active,button:active,button:focus,input[type=submit].active,input[type=submit]:active,input[type=submit]:focus{border-color:#68d7fb}.button[disabled],button[disabled],input[type=submit][disabled]{color:rgba(255,255,255,.5)}.button.small,button.small,input[type=submit].small{font-size:.86rem;padding:.2rem .8rem}.button.small svg,button.small svg,input[type=submit].small svg{width:1em;height:1em;vertical-align:middle;margin-right:.4rem}.button.danger:not(:disabled),button.danger:not(:disabled),input[type=submit].danger:not(:disabled){color:#fb6868;background-color:rgba(40,21,21,.6);border-color:#281515}.button.danger:not(:disabled):hover,button.danger:not(:disabled):hover,input[type=submit].danger:not(:disabled):hover{background-color:rgba(40,21,21,.8)}.button.danger:not(:disabled).active,.button.danger:not(:disabled):active,.button.danger:not(:disabled):focus,button.danger:not(:disabled).active,button.danger:not(:disabled):active,button.danger:not(:disabled):focus,input[type=submit].danger:not(:disabled).active,input[type=submit].danger:not(:disabled):active,input[type=submit].danger:not(:disabled):focus{border-color:#fb6868}.button.green:not(:disabled),button.green:not(:disabled),input[type=submit].green:not(:disabled){color:#97fb68;background-color:rgba(21,40,21,.6);border-color:#152815}.button.green:not(:disabled):hover,button.green:not(:disabled):hover,input[type=submit].green:not(:disabled):hover{backgrouLine truncated
@@ -1 +0,0 @@
{"version":3,"sources":["vendor/ember-cli/app-prefix.js","kredits-web/app.js","kredits-web/components/add-expense-item/component.js","kredits-web/components/add-reimbursement/component.js","kredits-web/components/budget-balances/component.js","kredits-web/components/confirmed-in/component.js","kredits-web/components/contributor-list/component.js","kredits-web/components/expense-list/component.js","kredits-web/components/reimbursement-item/component.js","kredits-web/components/reimbursement-list/component.js","kredits-web/components/topbar-account-panel/component.js","kredits-web/controllers/application.js","kredits-web/controllers/budget.js","kredits-web/controllers/signup/account.js","kredits-web/controllers/signup/index.js","kredits-web/component-managers/glimmer.js","kredits-web/components/add-contribution/component.js","kredits-web/components/add-contribution/template.js","kredits-web/components/add-contributor/component.js","kredits-web/components/add-contributor/template.js","kredits-web/components/add-expense-item/template.js","kredits-web/components/add-reimbursement/template.js","kredits-web/components/budget-balances/template.js","kredits-web/components/chart-contributions-by-type/component.js","kredits-web/components/chart-contributions-by-type/template.js","kredits-web/components/confirmed-in/template.js","kredits-web/components/contribution-list/component.js","kredits-web/components/contribution-list/template.js","kredits-web/components/contributor-list/template.js","kredits-web/components/ember-chart.js","kredits-web/components/ember-flatpickr.js","kredits-web/components/expense-list/template.js","kredits-web/components/external-account-link/component.js","kredits-web/components/external-account-link/template.js","kredits-web/components/loading-spinner/component.js","kredits-web/components/loading-spinner/template.js","kredits-web/components/main-navigation-menu/template.js","kredits-web/components/reimbursement-item/template.js","kredits-web/components/reimbursement-list/template.js","kredits-web/components/topbar-account-panel/template.js","kredits-web/components/user-avatar/component.js","kredits-web/components/user-avatar/template.js","kredits-web/controllers/contributions/new.js","kredits-web/controllers/contributions/resubmit.js","kredits-web/controllers/contributors/edit.js","kredits-web/controllers/contributors/new.js","kredits-web/controllers/dashboard.js","kredits-web/controllers/dashboard/contributions/show.js","kredits-web/controllers/dashboard/contributors/show.js","kredits-web/helpers/and.js","kredits-web/helpers/app-version.js","kredits-web/helpers/await.js","kredits-web/helpers/cancel-all.js","kredits-web/helpers/capitalize-string.js","kredits-web/helpers/eq.js","kredits-web/helpers/fmt-amount-sats-title.js","kredits-web/helpers/fmt-crypto-currency.js","kredits-web/helpers/fmt-date-localized.js","kredits-web/helpers/fmt-fiat-currency.js","kredits-web/helpers/fmt-number.js","kredits-web/helpers/gt.js","kredits-web/router.js","kredits-web/routes/about.js","kredits-web/routes/application.js","kredits-web/routes/budget.js","kredits-web/routes/budget/expenses.js","kredits-web/routes/contributions/new.js","kredits-web/routes/dashboard.js","kredits-web/helpers/gte.js","kredits-web/helpers/is-after.js","kredits-web/helpers/is-array.js","kredits-web/helpers/is-before.js","kredits-web/helpers/is-between.js","kredits-web/helpers/is-confirmed-contribution.js","kredits-web/helpers/is-current-user.js","kredits-web/helpers/is-empty.js","kredits-web/helpers/is-equal.js","kredits-web/helpers/is-fulfilled.js","kredits-web/helpers/is-pending.js","kredits-web/helpers/is-rejected.js","kredits-web/helpers/is-same-or-after.js","kredits-web/helpers/is-same-or-before.js","kredits-web/helpers/is-same.js","kredits-web/helpers/item-status.js","kredits-web/helpers/lt.js","kredits-web/helpers/lte.js","kredits-web/helpers/moment-add.js","kredits-web/helpers/moment-calendar.js","kredits-web/helpers/moment-diff.js","kredits-web/helpers/moment-duration.js","kredits-web/helpers/moment-format.js","kredits-web/helpers/moment-from-now.js","kredits-web/helpers/moment-from.js","kredits-web/helpers/moment-subtract.js","kredits-web/helpers/moment-to-date.js","kredits-web/helpers/moment-to-now.js","kredits-web/helpers/moment-to.js","kredits-web/helpers/moment-unix.js","kredits-web/routes/reimbursements/new.js","kredits-web/routes/signup/account.js","kredits-web/services/browser-cache.js","kredits-web/services/community-funds.js","kredits-web/helpers/moment.js","kredits-web/helpers/not-eq.js","kredits-web/helpers/not.js","kredits-web/helpers/now.js","kredits-web/helpers/or.js","kredits-web/helpers/perform.js","kredits-web/helpers/promise-all.js","kredits-web/helpers/promise-hash.js","kredits-web/helpers/promise-rejected-reason.js","kredits-web/helpers/sats-to-btc.js","kredits-web/helpers/task.js","kredits-web/helpers/unix.js","kredits-web/helpers/utc.js","kredits-web/helpers/xor.js","kredits-web/initializers/app-versionLine truncated
+4 -4
View File
@@ -8,10 +8,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="kredits-web/config/environment" content="%7B%22modulePrefix%22%3A%22kredits-web%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22auto%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22kredits-web%22%2C%22version%22%3A%222.3.0%2B66e1adc7%22%7D%2C%22web3ProviderUrl%22%3A%22https%3A%2F%2Frsk-testnet.kosmos.org%22%2C%22web3ChainId%22%3A31%2C%22web3NetworkName%22%3A%22RSK%20Testnet%22%2C%22githubConnectUrl%22%3A%22https%3A%2F%2Fhal8000.kosmos.chat%2Fkredits%2Fsignup%2Fconnect%2Fgithub%22%2C%22githubSignupUrl%22%3A%22https%3A%2F%2Fhal8000.kosmos.chat%2Fkredits%2Fsignup%2Fgithub%22%2C%22ipfs%22%3A%7B%22host%22%3A%22ipfs.kosmos.org%22%2C%22port%22%3A%225444%22%2C%22protocol%22%3A%22https%22%2C%22gatewayUrl%22%3A%22https%3A%2F%2Fipfs.kosmos.org%2Fipfs%22%7D%2C%22tokens%22%3A%7B%22BTC%22%3A%220x2260fac5e5542a773aa44fbcfedf7c193bc2c599%22%7D%2C%22communityFundsAPI%22%3A%7B%22balances%22%3A%7B%22onchain%22%3A%7B%22icon%22%3A%22icon-btc.png%22%2C%22symbol%22%3A%22BTC%22%2C%22description%22%3A%22BTC%20on%20chain%22%2C%22url%22%3A%22https%3A%2F%2Fapi.kosmos.org%2Fbtcpay%2Fonchain_btc_balance%22%7D%2C%22lightning%22%3A%7B%22icon%22%3A%22icon-btc-lightning.png%22%2C%22symbol%22%3A%22BTC%22%2C%22description%22%3A%22BTC%20on%20Lightning%20Network%22%2C%22url%22%3A%22https%3A%2F%2Fapi.kosmos.org%2Fbtcpay%2Flightning_btc_balance%22%7D%7D%7D%2C%22corsProxy%22%3A%22https%3A%2F%2Fcors.5apps.com%2F%3Furi%3D%22%2C%22exportApplicationGlobal%22%3Afalse%7D" />
<meta name="kredits-web/config/environment" content="%7B%22modulePrefix%22%3A%22kredits-web%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22auto%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22name%22%3A%22kredits-web%22%2C%22version%22%3A%222.1.1%2B5c9fbf50%22%7D%2C%22web3ProviderUrl%22%3A%22https%3A%2F%2Frsk-testnet.kosmos.org%22%2C%22web3ChainId%22%3A31%2C%22web3NetworkName%22%3A%22RSK%20Testnet%22%2C%22githubConnectUrl%22%3A%22https%3A%2F%2Fhal8000.kosmos.chat%2Fkredits%2Fsignup%2Fconnect%2Fgithub%22%2C%22githubSignupUrl%22%3A%22https%3A%2F%2Fhal8000.kosmos.chat%2Fkredits%2Fsignup%2Fgithub%22%2C%22ipfs%22%3A%7B%22host%22%3A%22ipfs.kosmos.org%22%2C%22port%22%3A%225444%22%2C%22protocol%22%3A%22https%22%2C%22gatewayUrl%22%3A%22https%3A%2F%2Fipfs.kosmos.org%2Fipfs%22%7D%2C%22tokens%22%3A%7B%22BTC%22%3A%220x2260fac5e5542a773aa44fbcfedf7c193bc2c599%22%7D%2C%22communityFundsAPI%22%3A%7B%22balances%22%3A%7B%22onchain%22%3A%7B%22icon%22%3A%22icon-btc.png%22%2C%22symbol%22%3A%22BTC%22%2C%22description%22%3A%22BTC%20on%20chain%22%2C%22url%22%3A%22https%3A%2F%2Fapi.kosmos.org%2Fbtcpay%2Fonchain_btc_balance%22%7D%2C%22lightning%22%3A%7B%22icon%22%3A%22icon-btc-lightning.png%22%2C%22symbol%22%3A%22BTC%22%2C%22description%22%3A%22BTC%20on%20Lightning%20Network%22%2C%22url%22%3A%22https%3A%2F%2Fapi.kosmos.org%2Fbtcpay%2Flightning_btc_balance%22%7D%7D%7D%2C%22corsProxy%22%3A%22https%3A%2F%2Fcors.5apps.com%2F%3Furi%3D%22%2C%22exportApplicationGlobal%22%3Afalse%7D" />
<link integrity="" rel="stylesheet" href="/assets/vendor-ca96b2e19fc9f356e3dbad90c9f3f323.css">
<link integrity="" rel="stylesheet" href="/assets/kredits-web-273a3e2096140c611fc6c314653c5122.css">
<link integrity="" rel="stylesheet" href="/assets/kredits-web-950f3a97cf1dfead67fdfdc4f5dc1cfb.css">
@@ -24,8 +24,8 @@
<body>
<script src="/assets/vendor-fe68375ecc84328a68fb6e2dc6c2ffd0.js" integrity="sha256-R9zoGCHpj2nktDrCaA5bsKl5UIzBz3pi8OxcjZUcUXg= sha512-KgK1Q5VBzvVFUa5DEMaexc2VLg337DOyWnvp/3HvNzcjSFwCRG/dCn3x6EMuxULl1lY/rCVJ2ZgZN0K5NwZDkA==" ></script>
<script src="/assets/kredits-web-ff25bacd2246c053f7629aa0ac30852d.js" integrity="sha256-ZMtyPPTI2FdCZOW2AhZKoSc3V1F8p7eb5paSnXfUUVE= sha512-lbKnfjHisBjgh4AVaSvDb+7zrtfrMd9PhVj3kUW+UREmA9kl3qLaWECHtIfWz4VNPfzQV9xg5P9hQFmcrPe+ig==" ></script>
<script src="/assets/vendor-4d87b3e0995c5bb18e46836a089900a4.js" integrity="sha256-5WmWY05Kd+n98Sw0GwuaWodmDVBZ2yVGGtC/2owVfQE= sha512-tiGPA5zvfhnSC9LPTmpvXJmOu30yhsdPqSiZJMPGmE/ez/xJLMaM29vjs4Cs74cDf6fX4uYSGRIu1KfOyGpJYA==" ></script>
<script src="/assets/kredits-web-5b714ebc501e0789ddba130f2a3f10e1.js" integrity="sha256-jb10J7E1WRUc8DztQgvbdsKXYRHqXTqjbap4CVh2AaM= sha512-dx+d1T+WrZs0qG1J4puW0hZEzG2Qh+d5iU3XXnkfkF8ya3lMp/L1xdfzh697Ca5x3/Gw7+j7Mb/LSPUfWuNCEQ==" ></script>
</body>
@@ -1,58 +1,13 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { click, fillIn, render } from '@ember/test-helpers';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
import contributors from '../../../fixtures/contributors';
module('Integration | Component | add-reimbursement', function(hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(function() {
let kredits = this.owner.lookup('service:kredits');
kredits.set('contributors', contributors);
kredits.set('currentUser', contributors.findBy('id', 3));
});
test('Contributor select menu', async function(assert) {
test('it works', async function(assert) {
await render(hbs`<AddReimbursement />`);
assert.equal(this.element.querySelectorAll('select#contributor option').length, contributors.length,
'contains correct amount of items');
assert.equal(this.element.querySelector('select#contributor option:checked').value, "3",
'preselects the connected contributor account');
});
test('Adding expense items', async function(assert) {
await render(hbs`<AddReimbursement />`);
assert.dom(this.element).includesText('New expense item');
await fillIn('form input[name="expense-amount"]', '49');
await fillIn('form input[name="expense-title"]', 'Domain kosmos.org (yearly fee)');
await click('form#add-expense-item input[type="submit"]');
assert.equal(this.element.querySelector('input[name="total-eur"]').value, '49',
'updates the total EUR amount');
assert.equal(this.element.querySelector('input[name="total-usd"]').value, '0',
'does not update the total USD amount');
assert.equal(this.element.querySelector('input[name="total-btc"]').value, '0.00534493',
'updates the total BTC amount');
assert.dom(this.element).doesNotIncludeText('New expense item');
await click('button#add-another-item');
await fillIn('form input[name="expense-amount"]', '29');
await fillIn('select[name="expense-currency"]', 'USD');
await fillIn('form input[name="expense-title"]', 'Domain kosmos.social (yearly fee)');
await click('form#add-expense-item input[type="submit"]');
assert.equal(this.element.querySelector('input[name="total-usd"]').value, '29',
'updates the total USD amount');
assert.equal(this.element.querySelector('input[name="total-eur"]').value, '49',
'does not update the total EUR amount');
assert.equal(this.element.querySelector('input[name="total-btc"]').value, '0.00804268',
'updates the total BTC amount');
assert.ok(true);
});
});
@@ -18,12 +18,5 @@ module('Integration | Helper | fmt-fiat-currency', function(hooks) {
await render(hbs`{{fmt-fiat-currency this.amount 'USD'}}`);
assert.ok(this.element.textContent.trim().match(/USD/),
'using defined currency when given');
await render(hbs`{{fmt-fiat-currency 0.00123 'BTC'}}`);
assert.ok(this.element.textContent.trim().match(/0.00123/),
'allows more decimals');
assert.ok(this.element.textContent.trim().match(/BTC/),
'using defined currency when given');
});
});
@@ -39,4 +39,12 @@ module('Unit | Component | add-reimbursement', function(hooks) {
assert.equal(component.totalEUR, '71');
assert.equal(component.totalUSD, '59');
});
test('#updateTotalAmountFromFiat', async function(assert) {
let component = createComponent('component:add-reimbursement');
component.expenses = expenses;
await component.exchangeRates.fetchRates();
component.updateTotalAmountFromFiat();
assert.equal(component.total, '0.01323322', 'converts EUR and USD totals to BTC and rounds to 8 decimals');
});
});
+29 -31
View File
@@ -1,31 +1,29 @@
import { isEmpty } from '@ember/utils';
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import Contributor from 'kredits-web/models/contributor';
module('Unit | Controller | Dashboard', function(hooks) {
setupTest(hooks);
let addFixtures = function(controller) {
[
{ github_username: "neo", github_uid: "318", totalKreditsEarned: 10000 },
{ github_username: "morpheus", github_uid: "843", totalKreditsEarned: 15000 },
{ github_username: "trinity", github_uid: "123", totalKreditsEarned: 5000 },
{ github_username: "mouse", github_uid: "696", totalKreditsEarned: 0 }
].forEach(fixture => {
controller.get('kredits.contributors').push(Contributor.create(fixture));
});
};
test('kreditsToplistSorted()', function(assert) {
const controller = this.owner.lookup('controller:dashboard');
addFixtures(controller);
const kreditsToplistSorted = controller.get('kreditsToplistSorted');
assert.equal(kreditsToplistSorted.length, 3,
'contains all contributors with kredits');
assert.ok(isEmpty(kreditsToplistSorted.findBy('github_username', 'mouse')),
'does not contain contributors with 0 kredits');
});
});
// import { isEmpty, isPresent } from '@ember/utils';
// import { module, test } from 'qunit';
// import { setupTest } from 'ember-qunit';
// import Contributor from 'kredits-web/models/contributor';
//
// module('Unit | Controller | index', function(hooks) {
// setupTest(hooks);
//
// let addFixtures = function(controller) {
// [
// { github_username: "neo", github_uid: "318", totalKreditsEarned: 10000 },
// { github_username: "morpheus", github_uid: "843", totalKreditsEarned: 15000 },
// { github_username: "trinity", github_uid: "123", totalKreditsEarned: 5000 },
// { github_username: "mouse", github_uid: "696", totalKreditsEarned: 0 }
// ].forEach(fixture => {
// controller.get('kredits.contributors').push(Contributor.create(fixture));
// });
// };
//
// test('doesn\'t contain people with 0 balance', function(assert) {
// let controller = this.owner.lookup('controller:index');
// addFixtures(controller);
//
// let contributorsSorted = controller.get('contributorsSorted');
//
// assert.ok(isPresent(contributorsSorted.findBy('github_username', 'neo')));
// assert.ok(isEmpty(contributorsSorted.findBy('github_username', 'mouse')));
// });
// });
+2 -2
View File
@@ -7,7 +7,7 @@ module('Unit | Service | exchange-rates', function(hooks) {
test('#fetchRates', async function(assert) {
let service = this.owner.lookup('service:exchange-rates');
await service.fetchRates();
assert.equal(service.EUR, 9167.57, 'fetches BTCEUR from Bitstamp');
assert.equal(service.USD, 10749.70, 'fetches BTCUSD from Bitstamp');
assert.equal(service.btceur, 9167.57, 'fetches BTCEUR from Bitstamp');
assert.equal(service.btcusd, 10749.70, 'fetches BTCUSD from Bitstamp');
});
});
-16
View File
@@ -1,16 +0,0 @@
import { floatToBtc, btcToSats, satsToBtc } from 'kredits-web/utils/btc-conversions';
import { module, test } from 'qunit';
module('Unit | Utility | btc-conversions', function() {
test('floatToBtc', function(assert) {
assert.equal(floatToBtc(0.001429007), 0.00142901);
});
test('btcToSats', function(assert) {
assert.equal(btcToSats(0.001429007), 142901);
});
test('satsToBtc', function(assert) {
assert.equal(satsToBtc(142901), 0.00142901);
});
});