decap-cms-backend-github 3.7.0 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/decap-cms-backend-github.js +73 -73
- package/dist/decap-cms-backend-github.js.LICENSE.txt +19 -0
- package/dist/decap-cms-backend-github.js.map +1 -1
- package/dist/esm/API.js +414 -0
- package/dist/esm/AuthenticationPage.js +28 -19
- package/dist/esm/implementation.js +176 -7
- package/package.json +17 -15
- package/src/API.ts +485 -0
- package/src/AuthenticationPage.js +4 -4
- package/src/__tests__/implementation.spec.js +487 -0
- package/src/implementation.tsx +203 -3
- package/src/polling.ts +472 -0
- package/LICENSE +0 -22
- package/dist/esm/rateLimitLink.js +0 -24
package/dist/esm/API.js
CHANGED
|
@@ -10,6 +10,9 @@ import { oneLine } from 'common-tags';
|
|
|
10
10
|
import { dirname } from 'path';
|
|
11
11
|
import { getAllResponses, APIError, EditorialWorkflowError, localForage, basename, readFileMetadata, CMS_BRANCH_PREFIX, generateContentKey, DEFAULT_PR_BODY, MERGE_COMMIT_MESSAGE, PreviewState, parseContentKey, branchFromContentKey, isCMSLabel, labelToStatus, statusToLabel, contentKeyFromBranch, requestWithBackoff, unsentRequest, throwOnConflictingBranches } from 'decap-cms-lib-util';
|
|
12
12
|
export const API_NAME = 'GitHub';
|
|
13
|
+
const {
|
|
14
|
+
fetchWithTimeout: fetch
|
|
15
|
+
} = unsentRequest;
|
|
13
16
|
export const MOCK_PULL_REQUEST = -1;
|
|
14
17
|
var GitHubCommitStatusState = /*#__PURE__*/function (GitHubCommitStatusState) {
|
|
15
18
|
GitHubCommitStatusState["Error"] = "error";
|
|
@@ -934,6 +937,7 @@ export default class API {
|
|
|
934
937
|
const pullRequest = await this.getBranchPullRequest(branch);
|
|
935
938
|
await this.mergePR(pullRequest);
|
|
936
939
|
await this.deleteBranch(branch);
|
|
940
|
+
await this.closeIssueOnPublish(collectionName, slug);
|
|
937
941
|
}
|
|
938
942
|
async createRef(type, name, sha) {
|
|
939
943
|
const result = await this.request(`${this.repoURL}/git/refs`, {
|
|
@@ -1212,4 +1216,414 @@ export default class API {
|
|
|
1212
1216
|
const pullRequest = await this.getBranchPullRequest(branch);
|
|
1213
1217
|
return pullRequest.head.sha;
|
|
1214
1218
|
}
|
|
1219
|
+
|
|
1220
|
+
/**
|
|
1221
|
+
* Constants for note formatting to aid with PR comment to note conversion
|
|
1222
|
+
*/
|
|
1223
|
+
static NOTE_STATUS_RESOLVED = 'RESOLVED';
|
|
1224
|
+
static NOTE_STATUS_OPEN = 'OPEN';
|
|
1225
|
+
static NOTES_LABEL = 'decap-cms-notes';
|
|
1226
|
+
static NOTE_ISSUE_PREFIX = 'Notes: ';
|
|
1227
|
+
// In Github we hide Decap Notes metadata in a HTML comment, that way we can track status of whether or not a note has been resolved (similar to GDocs)
|
|
1228
|
+
static NOTE_REGEX = /^<!-- DecapCMS Note - Status: (RESOLVED|OPEN) -->([\s\S]+)$/;
|
|
1229
|
+
|
|
1230
|
+
/**
|
|
1231
|
+
* Format a note for PR comment display
|
|
1232
|
+
*/
|
|
1233
|
+
formatNoteForGithub(note) {
|
|
1234
|
+
const status = note.resolved ? API.NOTE_STATUS_RESOLVED : API.NOTE_STATUS_OPEN;
|
|
1235
|
+
return `<!-- DecapCMS Note - Status: ${status} -->
|
|
1236
|
+
${note.content}`;
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* Parse a GitHub comment into a Note object
|
|
1241
|
+
*/
|
|
1242
|
+
parseCommentToNote(comment) {
|
|
1243
|
+
if (!comment || !comment.body || !comment.user) {
|
|
1244
|
+
throw new Error('Invalid comment structure');
|
|
1245
|
+
}
|
|
1246
|
+
const structuredMatch = comment.body.match(API.NOTE_REGEX);
|
|
1247
|
+
const content = structuredMatch ? structuredMatch[2].trim() : comment.body;
|
|
1248
|
+
const resolved = structuredMatch ? structuredMatch[1] === API.NOTE_STATUS_RESOLVED : false;
|
|
1249
|
+
if (!content.trim()) {
|
|
1250
|
+
throw new Error('Empty note content');
|
|
1251
|
+
}
|
|
1252
|
+
return {
|
|
1253
|
+
id: comment.id.toString(),
|
|
1254
|
+
author: comment.user.login,
|
|
1255
|
+
avatarUrl: comment.user.avatar_url,
|
|
1256
|
+
timestamp: comment.created_at,
|
|
1257
|
+
content,
|
|
1258
|
+
resolved,
|
|
1259
|
+
entrySlug: ''
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
/**
|
|
1264
|
+
* Create a GitHub issue for storing notes for a specific entry
|
|
1265
|
+
*/
|
|
1266
|
+
async createEntryIssue(collectionName, slug, entryTitle) {
|
|
1267
|
+
const title = `${API.NOTE_ISSUE_PREFIX}${entryTitle || `${collectionName}/${slug}`}`;
|
|
1268
|
+
const body = `This issue tracks notes for entry: \`${collectionName}/${slug}\`\n\n---\n*This issue was created automatically by Decap CMS for note management.*`;
|
|
1269
|
+
const response = await this.request(`${this.repoURL}/issues`, {
|
|
1270
|
+
method: 'POST',
|
|
1271
|
+
body: JSON.stringify({
|
|
1272
|
+
title,
|
|
1273
|
+
body,
|
|
1274
|
+
labels: [API.NOTES_LABEL, `collection:${collectionName}`]
|
|
1275
|
+
})
|
|
1276
|
+
});
|
|
1277
|
+
return response;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
/**
|
|
1281
|
+
* Find existing issue for an entry (returns null if not found)
|
|
1282
|
+
*/
|
|
1283
|
+
async findEntryIssue(collectionName, slug) {
|
|
1284
|
+
// Search for existing issue
|
|
1285
|
+
const searchQuery = `repo:${this.repo} label:${API.NOTES_LABEL} "${collectionName}/${slug}" in:body`;
|
|
1286
|
+
try {
|
|
1287
|
+
const searchResponse = await this.request('/search/issues', {
|
|
1288
|
+
params: {
|
|
1289
|
+
q: searchQuery
|
|
1290
|
+
}
|
|
1291
|
+
});
|
|
1292
|
+
if (searchResponse.items && searchResponse.items.length > 0) {
|
|
1293
|
+
return searchResponse.items[0];
|
|
1294
|
+
}
|
|
1295
|
+
return null;
|
|
1296
|
+
} catch (error) {
|
|
1297
|
+
console.warn('Failed to search for existing notes issue:', error);
|
|
1298
|
+
return null;
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
/**
|
|
1302
|
+
* Get issue with ETag support for conditional requests
|
|
1303
|
+
* Returns { status: 304 } if not modified, or { status: 200, data, etag } if modified
|
|
1304
|
+
*/
|
|
1305
|
+
async getIssueWithETag(issueNumber, etag) {
|
|
1306
|
+
try {
|
|
1307
|
+
const headers = {
|
|
1308
|
+
Authorization: `${this.tokenKeyword} ${this.token}`
|
|
1309
|
+
};
|
|
1310
|
+
if (etag) {
|
|
1311
|
+
headers['If-None-Match'] = etag;
|
|
1312
|
+
}
|
|
1313
|
+
const response = await fetch(`${this.apiRoot}${this.repoURL}/issues/${issueNumber}`, {
|
|
1314
|
+
headers
|
|
1315
|
+
});
|
|
1316
|
+
if (response.status === 304) {
|
|
1317
|
+
return {
|
|
1318
|
+
status: 304
|
|
1319
|
+
};
|
|
1320
|
+
}
|
|
1321
|
+
if (response.status === 200) {
|
|
1322
|
+
const issue = await response.json();
|
|
1323
|
+
const newETag = response.headers.get('ETag');
|
|
1324
|
+
const commentsResponse = await fetch(`${this.apiRoot}${this.repoURL}/issues/${issueNumber}/comments`, {
|
|
1325
|
+
headers
|
|
1326
|
+
});
|
|
1327
|
+
const commentsRaw = await commentsResponse.json();
|
|
1328
|
+
const comments = commentsRaw.map(comment => ({
|
|
1329
|
+
id: comment.id,
|
|
1330
|
+
body: comment.body,
|
|
1331
|
+
user: comment.user,
|
|
1332
|
+
created_at: comment.created_at,
|
|
1333
|
+
updated_at: comment.updated_at
|
|
1334
|
+
}));
|
|
1335
|
+
const issueState = {
|
|
1336
|
+
number: issue.number,
|
|
1337
|
+
title: issue.title,
|
|
1338
|
+
body: issue.body,
|
|
1339
|
+
state: issue.state,
|
|
1340
|
+
updated_at: issue.updated_at,
|
|
1341
|
+
comments,
|
|
1342
|
+
labels: issue.labels,
|
|
1343
|
+
html_url: issue.html_url
|
|
1344
|
+
};
|
|
1345
|
+
return {
|
|
1346
|
+
status: 200,
|
|
1347
|
+
data: issueState,
|
|
1348
|
+
etag: newETag
|
|
1349
|
+
};
|
|
1350
|
+
}
|
|
1351
|
+
throw new Error(`Unexpected status: ${response.status}`);
|
|
1352
|
+
} catch (error) {
|
|
1353
|
+
if (error.status === 304) {
|
|
1354
|
+
return {
|
|
1355
|
+
status: 304
|
|
1356
|
+
};
|
|
1357
|
+
}
|
|
1358
|
+
throw error;
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
/**
|
|
1363
|
+
* Get the current state of an issue (without ETag)
|
|
1364
|
+
*/
|
|
1365
|
+
async getIssueState(issueNumber) {
|
|
1366
|
+
const response = await this.getIssueWithETag(issueNumber, null);
|
|
1367
|
+
if (response.status === 200 && response.data) {
|
|
1368
|
+
return response.data;
|
|
1369
|
+
}
|
|
1370
|
+
throw new Error('Failed to get issue state');
|
|
1371
|
+
}
|
|
1372
|
+
/**
|
|
1373
|
+
* Get comments from a GitHub issue
|
|
1374
|
+
*/
|
|
1375
|
+
async getIssueComments(issueNumber) {
|
|
1376
|
+
try {
|
|
1377
|
+
const response = await this.request(`${this.repoURL}/issues/${issueNumber}/comments`);
|
|
1378
|
+
return Array.isArray(response) ? response : [];
|
|
1379
|
+
} catch (error) {
|
|
1380
|
+
console.error('Failed to get issue comments:', error);
|
|
1381
|
+
return [];
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
/**
|
|
1386
|
+
* Create a comment on a GitHub issue
|
|
1387
|
+
*/
|
|
1388
|
+
async createIssueComment(issueNumber, note) {
|
|
1389
|
+
try {
|
|
1390
|
+
const response = await this.request(`${this.repoURL}/issues/${issueNumber}/comments`, {
|
|
1391
|
+
method: 'POST',
|
|
1392
|
+
body: JSON.stringify({
|
|
1393
|
+
body: this.formatNoteForGithub(note)
|
|
1394
|
+
})
|
|
1395
|
+
});
|
|
1396
|
+
return response.id.toString();
|
|
1397
|
+
} catch (error) {
|
|
1398
|
+
console.error('Failed to create issue comment:', error);
|
|
1399
|
+
throw new APIError('Failed to create note', error.status || 500, API_NAME);
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
/**
|
|
1404
|
+
* Update a GitHub issue comment
|
|
1405
|
+
*/
|
|
1406
|
+
async updateIssueComment(commentId, note) {
|
|
1407
|
+
try {
|
|
1408
|
+
await this.request(`${this.repoURL}/issues/comments/${commentId}`, {
|
|
1409
|
+
method: 'PATCH',
|
|
1410
|
+
body: JSON.stringify({
|
|
1411
|
+
body: this.formatNoteForGithub(note)
|
|
1412
|
+
})
|
|
1413
|
+
});
|
|
1414
|
+
} catch (error) {
|
|
1415
|
+
console.error('Failed to update issue comment:', error);
|
|
1416
|
+
throw new APIError('Failed to update note', error.status || 500, API_NAME);
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1420
|
+
/**
|
|
1421
|
+
* Delete a GitHub issue comment
|
|
1422
|
+
*/
|
|
1423
|
+
async deleteIssueComment(commentId) {
|
|
1424
|
+
try {
|
|
1425
|
+
await this.request(`${this.repoURL}/issues/comments/${commentId}`, {
|
|
1426
|
+
method: 'DELETE'
|
|
1427
|
+
});
|
|
1428
|
+
} catch (error) {
|
|
1429
|
+
console.error('Failed to delete issue comment:', error);
|
|
1430
|
+
throw new APIError('Failed to delete note', error.status || 500, API_NAME);
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* Close the notes issue when an entry is published
|
|
1436
|
+
*/
|
|
1437
|
+
async closeIssueOnPublish(collectionName, slug) {
|
|
1438
|
+
try {
|
|
1439
|
+
const searchQuery = `repo:${this.repo} label:${API.NOTES_LABEL} "${collectionName}/${slug}" in:body state:open`;
|
|
1440
|
+
const searchResponse = await this.request('/search/issues', {
|
|
1441
|
+
params: {
|
|
1442
|
+
q: searchQuery
|
|
1443
|
+
}
|
|
1444
|
+
});
|
|
1445
|
+
if (searchResponse.items && searchResponse.items.length > 0) {
|
|
1446
|
+
const issue = searchResponse.items[0];
|
|
1447
|
+
await this.request(`${this.repoURL}/issues/${issue.number}`, {
|
|
1448
|
+
method: 'PATCH',
|
|
1449
|
+
body: JSON.stringify({
|
|
1450
|
+
state: 'closed',
|
|
1451
|
+
labels: [...(issue.labels || []).map(l => l.name), 'entry-published']
|
|
1452
|
+
})
|
|
1453
|
+
});
|
|
1454
|
+
}
|
|
1455
|
+
} catch (error) {
|
|
1456
|
+
console.warn('Failed to close notes issue on publish:', error);
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
/**
|
|
1461
|
+
* Reopen the notes issue when an entry is unpublished
|
|
1462
|
+
*/
|
|
1463
|
+
async reopenIssueOnUnpublish(collectionName, slug) {
|
|
1464
|
+
try {
|
|
1465
|
+
const searchQuery = `repo:${this.repo} label:${API.NOTES_LABEL} "${collectionName}/${slug}" in:body`;
|
|
1466
|
+
const searchResponse = await this.request('/search/issues', {
|
|
1467
|
+
params: {
|
|
1468
|
+
q: searchQuery
|
|
1469
|
+
}
|
|
1470
|
+
});
|
|
1471
|
+
if (searchResponse.items && searchResponse.items.length > 0) {
|
|
1472
|
+
const issue = searchResponse.items[0];
|
|
1473
|
+
// Remove 'entry-published' or 'entry-deleted' labels and reopen
|
|
1474
|
+
const updatedLabels = (issue.labels || []).map(l => l.name).filter(name => name !== 'entry-published' && name !== 'entry-deleted');
|
|
1475
|
+
await this.request(`${this.repoURL}/issues/${issue.number}`, {
|
|
1476
|
+
method: 'PATCH',
|
|
1477
|
+
body: JSON.stringify({
|
|
1478
|
+
state: 'open',
|
|
1479
|
+
labels: updatedLabels
|
|
1480
|
+
})
|
|
1481
|
+
});
|
|
1482
|
+
}
|
|
1483
|
+
} catch (error) {
|
|
1484
|
+
console.warn('Failed to reopen notes issue on unpublish:', error);
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
/**
|
|
1489
|
+
* Get all notes for an entry
|
|
1490
|
+
*/
|
|
1491
|
+
async getEntryNotes(collectionName, slug) {
|
|
1492
|
+
try {
|
|
1493
|
+
const issue = await this.findEntryIssue(collectionName, slug);
|
|
1494
|
+
if (!issue) {
|
|
1495
|
+
return []; // No issue means no notes yet
|
|
1496
|
+
}
|
|
1497
|
+
const comments = await this.getIssueComments(issue.number);
|
|
1498
|
+
const issueUrl = issue.html_url; // Get the issue URL once
|
|
1499
|
+
|
|
1500
|
+
// Add issueUrl to each note
|
|
1501
|
+
return comments.map(comment => ({
|
|
1502
|
+
...this.parseCommentToNote(comment),
|
|
1503
|
+
issueUrl // Add the issue URL to each note (this info is picked up by the UI to direct users to the source of the Notes in Github)
|
|
1504
|
+
}));
|
|
1505
|
+
} catch (error) {
|
|
1506
|
+
console.error('Failed to get entry notes:', error);
|
|
1507
|
+
return [];
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
/**
|
|
1512
|
+
* Add a note to any entry
|
|
1513
|
+
*/
|
|
1514
|
+
async addNoteToEntry(collectionName, slug, note, entryTitle) {
|
|
1515
|
+
try {
|
|
1516
|
+
let issue = await this.findEntryIssue(collectionName, slug);
|
|
1517
|
+
if (!issue) {
|
|
1518
|
+
issue = await this.createEntryIssue(collectionName, slug, entryTitle);
|
|
1519
|
+
}
|
|
1520
|
+
const commentId = await this.createIssueComment(issue.number, note);
|
|
1521
|
+
return {
|
|
1522
|
+
commentId,
|
|
1523
|
+
issueUrl: issue.html_url
|
|
1524
|
+
};
|
|
1525
|
+
} catch (error) {
|
|
1526
|
+
console.error('Failed to add note to entry:', error);
|
|
1527
|
+
throw new APIError('Failed to create note', error.status || 500, API_NAME);
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
async updateEntryNote(noteId, note) {
|
|
1531
|
+
try {
|
|
1532
|
+
await this.updateIssueComment(noteId, note);
|
|
1533
|
+
} catch (error) {
|
|
1534
|
+
console.error('Failed to update entry note:', error);
|
|
1535
|
+
throw new APIError('Failed to update note', error.status || 500, API_NAME);
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
async deleteEntryNote(noteId) {
|
|
1539
|
+
try {
|
|
1540
|
+
await this.deleteIssueComment(noteId);
|
|
1541
|
+
} catch (error) {
|
|
1542
|
+
console.error('Failed to delete entry note:', error);
|
|
1543
|
+
throw new APIError('Failed to delete note', error.status || 500, API_NAME);
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1547
|
+
/**
|
|
1548
|
+
* Get all entries that have notes (useful for showing notes indicator in UI)
|
|
1549
|
+
*/
|
|
1550
|
+
async getEntriesWithNotes() {
|
|
1551
|
+
try {
|
|
1552
|
+
const searchQuery = `repo:${this.repo} label:${API.NOTES_LABEL} state:open`;
|
|
1553
|
+
const searchResponse = await this.request('/search/issues', {
|
|
1554
|
+
params: {
|
|
1555
|
+
q: searchQuery,
|
|
1556
|
+
per_page: 100
|
|
1557
|
+
}
|
|
1558
|
+
});
|
|
1559
|
+
const entriesWithNotes = [];
|
|
1560
|
+
for (const issue of searchResponse.items || []) {
|
|
1561
|
+
// Extract collection/slug from issue body
|
|
1562
|
+
const match = issue.body.match(/entry: `(.+)\/(.+)`/);
|
|
1563
|
+
if (match) {
|
|
1564
|
+
const [, collection, slug] = match;
|
|
1565
|
+
entriesWithNotes.push({
|
|
1566
|
+
collection,
|
|
1567
|
+
slug,
|
|
1568
|
+
noteCount: issue.comments
|
|
1569
|
+
});
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
return entriesWithNotes;
|
|
1573
|
+
} catch (error) {
|
|
1574
|
+
console.error('Failed to get entries with notes:', error);
|
|
1575
|
+
return [];
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
/**
|
|
1580
|
+
* Close notes issue when entry is deleted
|
|
1581
|
+
*/
|
|
1582
|
+
async closeEntryNotesIssue(collectionName, slug) {
|
|
1583
|
+
try {
|
|
1584
|
+
const searchQuery = `repo:${this.repo} label:${API.NOTES_LABEL} "${collectionName}/${slug}" in:body state:open`;
|
|
1585
|
+
const searchResponse = await this.request('/search/issues', {
|
|
1586
|
+
params: {
|
|
1587
|
+
q: searchQuery
|
|
1588
|
+
}
|
|
1589
|
+
});
|
|
1590
|
+
if (searchResponse.items && searchResponse.items.length > 0) {
|
|
1591
|
+
const issue = searchResponse.items[0];
|
|
1592
|
+
await this.request(`${this.repoURL}/issues/${issue.number}`, {
|
|
1593
|
+
method: 'PATCH',
|
|
1594
|
+
body: JSON.stringify({
|
|
1595
|
+
state: 'closed',
|
|
1596
|
+
labels: [...(issue.labels || []).map(l => l.name), 'entry-deleted']
|
|
1597
|
+
})
|
|
1598
|
+
});
|
|
1599
|
+
}
|
|
1600
|
+
} catch (error) {
|
|
1601
|
+
console.warn('Failed to close notes issue:', error);
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
/**
|
|
1606
|
+
* Get PR metadata from branch name
|
|
1607
|
+
*/
|
|
1608
|
+
async getPRMetadataFromBranch(branchName) {
|
|
1609
|
+
try {
|
|
1610
|
+
const response = await this.request(`${this.originRepoURL}/pulls`, {
|
|
1611
|
+
params: {
|
|
1612
|
+
head: await this.getHeadReference(branchName),
|
|
1613
|
+
state: 'open'
|
|
1614
|
+
}
|
|
1615
|
+
});
|
|
1616
|
+
const pr = response[0];
|
|
1617
|
+
if (!pr) return null;
|
|
1618
|
+
return {
|
|
1619
|
+
id: pr.number.toString(),
|
|
1620
|
+
url: pr.html_url,
|
|
1621
|
+
author: pr.user?.login || 'unknown',
|
|
1622
|
+
createdAt: pr.created_at
|
|
1623
|
+
};
|
|
1624
|
+
} catch (error) {
|
|
1625
|
+
console.error('Failed to get PR metadata:', error);
|
|
1626
|
+
return null;
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1215
1629
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import _styled from "@emotion/styled/base";
|
|
2
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
2
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
4
|
-
import
|
|
3
|
+
import { Component, Fragment } from 'react';
|
|
5
4
|
import PropTypes from 'prop-types';
|
|
6
5
|
import { NetlifyAuthenticator } from 'decap-cms-lib-auth';
|
|
7
6
|
import { AuthenticationPage, Icon } from 'decap-cms-ui-default';
|
|
8
|
-
import { jsx as
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
9
8
|
const LoginButtonIcon = /*#__PURE__*/_styled(Icon, {
|
|
10
9
|
target: "e1ko648l2",
|
|
11
10
|
label: "LoginButtonIcon"
|
|
@@ -14,7 +13,7 @@ const LoginButtonIcon = /*#__PURE__*/_styled(Icon, {
|
|
|
14
13
|
styles: "margin-right:18px"
|
|
15
14
|
} : {
|
|
16
15
|
name: "1gnqu05",
|
|
17
|
-
styles: "margin-right:18px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
styles: "margin-right:18px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BdXRoZW50aWNhdGlvblBhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTW9DIiwiZmlsZSI6Ii4uLy4uL3NyYy9BdXRoZW50aWNhdGlvblBhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IE5ldGxpZnlBdXRoZW50aWNhdG9yIH0gZnJvbSAnZGVjYXAtY21zLWxpYi1hdXRoJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uUGFnZSwgSWNvbiB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgTG9naW5CdXR0b25JY29uID0gc3R5bGVkKEljb24pYFxuICBtYXJnaW4tcmlnaHQ6IDE4cHg7XG5gO1xuXG5jb25zdCBGb3JrQXBwcm92YWxDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBmbGV4LWdyb3c6IDAuMjtcbmA7XG5jb25zdCBGb3JrQnV0dG9uc0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHaXRIdWJBdXRoZW50aWNhdGlvblBhZ2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9uTG9naW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLmJvb2wsXG4gICAgYmFzZV91cmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2l0ZUlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGF1dGhFbmRwb2ludDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjbGVhckhhc2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgc3RhdGUgPSB7fTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAvLyBNYW51YWxseSB2YWxpZGF0ZSBQcm9wVHlwZXMgLSBSZWFjdCAxOSBicmVha2luZyBjaGFuZ2VcbiAgICBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoXG4gICAgICBHaXRIdWJBdXRoZW50aWNhdGlvblBhZ2UucHJvcFR5cGVzLFxuICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICdwcm9wJyxcbiAgICAgICdHaXRIdWJBdXRoZW50aWNhdGlvblBhZ2UnLFxuICAgICk7XG4gIH1cblxuICBnZXRQZXJtaXNzaW9uVG9Gb3JrID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcmVxdWVzdGluZ0Zvcms6IHRydWUsXG4gICAgICAgIGFwcHJvdmVGb3JrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlcXVlc3RpbmdGb3JrOiBmYWxzZSB9KTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnVzZUZvcms6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcmVxdWVzdGluZ0Zvcms6IGZhbHNlIH0pO1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgbG9naW5XaXRoT3BlbkF1dGhvcmluZyhkYXRhKSB7XG4gICAgY29uc3QgeyBiYWNrZW5kIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbmRpbmdGb3JrOiB0cnVlIH0pO1xuICAgIHJldHVybiBiYWNrZW5kXG4gICAgICAuYXV0aGVudGljYXRlV2l0aEZvcmsoeyB1c2VyRGF0YTogZGF0YSwgZ2V0UGVybWlzc2lvblRvRm9yazogdGhpcy5nZXRQZXJtaXNzaW9uVG9Gb3JrIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbmRpbmdGb3JrOiBmYWxzZSB9KTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUxvZ2luID0gZSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNmZyA9IHtcbiAgICAgIGJhc2VfdXJsOiB0aGlzLnByb3BzLmJhc2VfdXJsLFxuICAgICAgc2l0ZV9pZDpcbiAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaG9zdC5zcGxpdCgnOicpWzBdID09PSAnbG9jYWxob3N0J1xuICAgICAgICAgID8gJ2RlbW8uZGVjYXBjbXMub3JnJ1xuICAgICAgICAgIDogdGhpcy5wcm9wcy5zaXRlSWQsXG4gICAgICBhdXRoX2VuZHBvaW50OiB0aGlzLnByb3BzLmF1dGhFbmRwb2ludCxcbiAgICB9O1xuICAgIGNvbnN0IGF1dGggPSBuZXcgTmV0bGlmeUF1dGhlbnRpY2F0b3IoY2ZnKTtcblxuICAgIGNvbnN0IHsgb3Blbl9hdXRob3Jpbmc6IG9wZW5BdXRob3JpbmcgPSBmYWxzZSwgYXV0aF9zY29wZTogYXV0aFNjb3BlID0gJycgfSA9XG4gICAgICB0aGlzLnByb3BzLmNvbmZpZy5iYWNrZW5kO1xuXG4gICAgY29uc3Qgc2NvcGUgPSBhdXRoU2NvcGUgfHwgKG9wZW5BdXRob3JpbmcgPyAncHVibGljX3JlcG8nIDogJ3JlcG8nKTtcbiAgICBhdXRoLmF1dGhlbnRpY2F0ZSh7IHByb3ZpZGVyOiAnZ2l0aHViJywgc2NvcGUgfSwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9naW5FcnJvcjogZXJyLnRvU3RyaW5nKCkgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChvcGVuQXV0aG9yaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ2luV2l0aE9wZW5BdXRob3JpbmcoZGF0YSkudGhlbigoKSA9PiB0aGlzLnByb3BzLm9uTG9naW4oZGF0YSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5vbkxvZ2luKGRhdGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJlbmRlckxvZ2luQnV0dG9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgaW5Qcm9ncmVzcywgdCB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gaW5Qcm9ncmVzcyB8fCB0aGlzLnN0YXRlLmZpbmRpbmdGb3JrID8gKFxuICAgICAgdCgnYXV0aC5sb2dnaW5nSW4nKVxuICAgICkgOiAoXG4gICAgICA8RnJhZ21lbnQ+XG4gICAgICAgIDxMb2dpbkJ1dHRvbkljb24gdHlwZT1cImdpdGh1YlwiIC8+XG4gICAgICAgIHt0KCdhdXRoLmxvZ2luV2l0aEdpdEh1YicpfVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9O1xuXG4gIGdldEF1dGhlbnRpY2F0aW9uUGFnZVJlbmRlckFyZ3MoKSB7XG4gICAgY29uc3QgeyByZXF1ZXN0aW5nRm9yayB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChyZXF1ZXN0aW5nRm9yaykge1xuICAgICAgY29uc3QgeyBhcHByb3ZlRm9yaywgcmVmdXNlRm9yayB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbmRlclBhZ2VDb250ZW50OiAoeyBMb2dpbkJ1dHRvbiwgVGV4dEJ1dHRvbiwgc2hvd0Fib3J0QnV0dG9uIH0pID0+IChcbiAgICAgICAgICA8Rm9ya0FwcHJvdmFsQ29udGFpbmVyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIE9wZW4gQXV0aG9yaW5nIGlzIGVuYWJsZWQ6IHdlIG5lZWQgdG8gdXNlIGEgZm9yayBvbiB5b3VyIGdpdGh1YiBhY2NvdW50LiAoSWYgYSBmb3JrXG4gICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCB3ZSYjMzk7bGwgdXNlIHRoYXQuKVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPEZvcmtCdXR0b25zQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8TG9naW5CdXR0b24gb25DbGljaz17YXBwcm92ZUZvcmt9PkZvcmsgdGhlIHJlcG88L0xvZ2luQnV0dG9uPlxuICAgICAgICAgICAgICB7c2hvd0Fib3J0QnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICA8VGV4dEJ1dHRvbiBvbkNsaWNrPXtyZWZ1c2VGb3JrfT5Eb24mIzM5O3QgZm9yayB0aGUgcmVwbzwvVGV4dEJ1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRm9ya0J1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgPC9Gb3JrQXBwcm92YWxDb250YWluZXI+XG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZW5kZXJCdXR0b25Db250ZW50OiB0aGlzLnJlbmRlckxvZ2luQnV0dG9uLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBpblByb2dyZXNzLCBjb25maWcsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBsb2dpbkVycm9yLCByZXF1ZXN0aW5nRm9yaywgZmluZGluZ0ZvcmsgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEF1dGhlbnRpY2F0aW9uUGFnZVxuICAgICAgICBvbkxvZ2luPXt0aGlzLmhhbmRsZUxvZ2lufVxuICAgICAgICBsb2dpbkRpc2FibGVkPXtpblByb2dyZXNzIHx8IGZpbmRpbmdGb3JrIHx8IHJlcXVlc3RpbmdGb3JrfVxuICAgICAgICBsb2dpbkVycm9yTWVzc2FnZT17bG9naW5FcnJvcn1cbiAgICAgICAgbG9nb1VybD17Y29uZmlnLmxvZ29fdXJsfSAvLyBEZXByZWNhdGVkLCByZXBsYWNlZCBieSBgbG9nby5zcmNgXG4gICAgICAgIGxvZ289e2NvbmZpZy5sb2dvfVxuICAgICAgICBzaXRlVXJsPXtjb25maWcuc2l0ZV91cmx9XG4gICAgICAgIHsuLi50aGlzLmdldEF1dGhlbnRpY2F0aW9uUGFnZVJlbmRlckFyZ3MoKX1cbiAgICAgICAgdD17dH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl19 */",
|
|
18
17
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
19
18
|
});
|
|
20
19
|
const ForkApprovalContainer = /*#__PURE__*/_styled("div", {
|
|
@@ -25,7 +24,7 @@ const ForkApprovalContainer = /*#__PURE__*/_styled("div", {
|
|
|
25
24
|
styles: "display:flex;flex-flow:column nowrap;justify-content:space-around;flex-grow:0.2"
|
|
26
25
|
} : {
|
|
27
26
|
name: "13alw87",
|
|
28
|
-
styles: "display:flex;flex-flow:column nowrap;justify-content:space-around;flex-grow:0.2/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
27
|
+
styles: "display:flex;flex-flow:column nowrap;justify-content:space-around;flex-grow:0.2/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BdXRoZW50aWNhdGlvblBhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVXdDIiwiZmlsZSI6Ii4uLy4uL3NyYy9BdXRoZW50aWNhdGlvblBhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IE5ldGxpZnlBdXRoZW50aWNhdG9yIH0gZnJvbSAnZGVjYXAtY21zLWxpYi1hdXRoJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uUGFnZSwgSWNvbiB9IGZyb20gJ2RlY2FwLWNtcy11aS1kZWZhdWx0JztcblxuY29uc3QgTG9naW5CdXR0b25JY29uID0gc3R5bGVkKEljb24pYFxuICBtYXJnaW4tcmlnaHQ6IDE4cHg7XG5gO1xuXG5jb25zdCBGb3JrQXBwcm92YWxDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBmbGV4LWdyb3c6IDAuMjtcbmA7XG5jb25zdCBGb3JrQnV0dG9uc0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHaXRIdWJBdXRoZW50aWNhdGlvblBhZ2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9uTG9naW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLmJvb2wsXG4gICAgYmFzZV91cmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2l0ZUlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGF1dGhFbmRwb2ludDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjbGVhckhhc2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIH07XG5cbiAgc3RhdGUgPSB7fTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAvLyBNYW51YWxseSB2YWxpZGF0ZSBQcm9wVHlwZXMgLSBSZWFjdCAxOSBicmVha2luZyBjaGFuZ2VcbiAgICBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoXG4gICAgICBHaXRIdWJBdXRoZW50aWNhdGlvblBhZ2UucHJvcFR5cGVzLFxuICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICdwcm9wJyxcbiAgICAgICdHaXRIdWJBdXRoZW50aWNhdGlvblBhZ2UnLFxuICAgICk7XG4gIH1cblxuICBnZXRQZXJtaXNzaW9uVG9Gb3JrID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcmVxdWVzdGluZ0Zvcms6IHRydWUsXG4gICAgICAgIGFwcHJvdmVGb3JrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlcXVlc3RpbmdGb3JrOiBmYWxzZSB9KTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnVzZUZvcms6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcmVxdWVzdGluZ0Zvcms6IGZhbHNlIH0pO1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgbG9naW5XaXRoT3BlbkF1dGhvcmluZyhkYXRhKSB7XG4gICAgY29uc3QgeyBiYWNrZW5kIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbmRpbmdGb3JrOiB0cnVlIH0pO1xuICAgIHJldHVybiBiYWNrZW5kXG4gICAgICAuYXV0aGVudGljYXRlV2l0aEZvcmsoeyB1c2VyRGF0YTogZGF0YSwgZ2V0UGVybWlzc2lvblRvRm9yazogdGhpcy5nZXRQZXJtaXNzaW9uVG9Gb3JrIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbmRpbmdGb3JrOiBmYWxzZSB9KTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUxvZ2luID0gZSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNmZyA9IHtcbiAgICAgIGJhc2VfdXJsOiB0aGlzLnByb3BzLmJhc2VfdXJsLFxuICAgICAgc2l0ZV9pZDpcbiAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaG9zdC5zcGxpdCgnOicpWzBdID09PSAnbG9jYWxob3N0J1xuICAgICAgICAgID8gJ2RlbW8uZGVjYXBjbXMub3JnJ1xuICAgICAgICAgIDogdGhpcy5wcm9wcy5zaXRlSWQsXG4gICAgICBhdXRoX2VuZHBvaW50OiB0aGlzLnByb3BzLmF1dGhFbmRwb2ludCxcbiAgICB9O1xuICAgIGNvbnN0IGF1dGggPSBuZXcgTmV0bGlmeUF1dGhlbnRpY2F0b3IoY2ZnKTtcblxuICAgIGNvbnN0IHsgb3Blbl9hdXRob3Jpbmc6IG9wZW5BdXRob3JpbmcgPSBmYWxzZSwgYXV0aF9zY29wZTogYXV0aFNjb3BlID0gJycgfSA9XG4gICAgICB0aGlzLnByb3BzLmNvbmZpZy5iYWNrZW5kO1xuXG4gICAgY29uc3Qgc2NvcGUgPSBhdXRoU2NvcGUgfHwgKG9wZW5BdXRob3JpbmcgPyAncHVibGljX3JlcG8nIDogJ3JlcG8nKTtcbiAgICBhdXRoLmF1dGhlbnRpY2F0ZSh7IHByb3ZpZGVyOiAnZ2l0aHViJywgc2NvcGUgfSwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9naW5FcnJvcjogZXJyLnRvU3RyaW5nKCkgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChvcGVuQXV0aG9yaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ2luV2l0aE9wZW5BdXRob3JpbmcoZGF0YSkudGhlbigoKSA9PiB0aGlzLnByb3BzLm9uTG9naW4oZGF0YSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5vbkxvZ2luKGRhdGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJlbmRlckxvZ2luQnV0dG9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgaW5Qcm9ncmVzcywgdCB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gaW5Qcm9ncmVzcyB8fCB0aGlzLnN0YXRlLmZpbmRpbmdGb3JrID8gKFxuICAgICAgdCgnYXV0aC5sb2dnaW5nSW4nKVxuICAgICkgOiAoXG4gICAgICA8RnJhZ21lbnQ+XG4gICAgICAgIDxMb2dpbkJ1dHRvbkljb24gdHlwZT1cImdpdGh1YlwiIC8+XG4gICAgICAgIHt0KCdhdXRoLmxvZ2luV2l0aEdpdEh1YicpfVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9O1xuXG4gIGdldEF1dGhlbnRpY2F0aW9uUGFnZVJlbmRlckFyZ3MoKSB7XG4gICAgY29uc3QgeyByZXF1ZXN0aW5nRm9yayB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChyZXF1ZXN0aW5nRm9yaykge1xuICAgICAgY29uc3QgeyBhcHByb3ZlRm9yaywgcmVmdXNlRm9yayB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbmRlclBhZ2VDb250ZW50OiAoeyBMb2dpbkJ1dHRvbiwgVGV4dEJ1dHRvbiwgc2hvd0Fib3J0QnV0dG9uIH0pID0+IChcbiAgICAgICAgICA8Rm9ya0FwcHJvdmFsQ29udGFpbmVyPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIE9wZW4gQXV0aG9yaW5nIGlzIGVuYWJsZWQ6IHdlIG5lZWQgdG8gdXNlIGEgZm9yayBvbiB5b3VyIGdpdGh1YiBhY2NvdW50LiAoSWYgYSBmb3JrXG4gICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCB3ZSYjMzk7bGwgdXNlIHRoYXQuKVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPEZvcmtCdXR0b25zQ29udGFpbmVyPlxuICAgICAgICAgICAgICA8TG9naW5CdXR0b24gb25DbGljaz17YXBwcm92ZUZvcmt9PkZvcmsgdGhlIHJlcG88L0xvZ2luQnV0dG9uPlxuICAgICAgICAgICAgICB7c2hvd0Fib3J0QnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICA8VGV4dEJ1dHRvbiBvbkNsaWNrPXtyZWZ1c2VGb3JrfT5Eb24mIzM5O3QgZm9yayB0aGUgcmVwbzwvVGV4dEJ1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRm9ya0J1dHRvbnNDb250YWluZXI+XG4gICAgICAgICAgPC9Gb3JrQXBwcm92YWxDb250YWluZXI+XG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZW5kZXJCdXR0b25Db250ZW50OiB0aGlzLnJlbmRlckxvZ2luQnV0dG9uLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBpblByb2dyZXNzLCBjb25maWcsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBsb2dpbkVycm9yLCByZXF1ZXN0aW5nRm9yaywgZmluZGluZ0ZvcmsgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEF1dGhlbnRpY2F0aW9uUGFnZVxuICAgICAgICBvbkxvZ2luPXt0aGlzLmhhbmRsZUxvZ2lufVxuICAgICAgICBsb2dpbkRpc2FibGVkPXtpblByb2dyZXNzIHx8IGZpbmRpbmdGb3JrIHx8IHJlcXVlc3RpbmdGb3JrfVxuICAgICAgICBsb2dpbkVycm9yTWVzc2FnZT17bG9naW5FcnJvcn1cbiAgICAgICAgbG9nb1VybD17Y29uZmlnLmxvZ29fdXJsfSAvLyBEZXByZWNhdGVkLCByZXBsYWNlZCBieSBgbG9nby5zcmNgXG4gICAgICAgIGxvZ289e2NvbmZpZy5sb2dvfVxuICAgICAgICBzaXRlVXJsPXtjb25maWcuc2l0ZV91cmx9XG4gICAgICAgIHsuLi50aGlzLmdldEF1dGhlbnRpY2F0aW9uUGFnZVJlbmRlckFyZ3MoKX1cbiAgICAgICAgdD17dH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl19 */",
|
|
29
28
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
30
29
|
});
|
|
31
30
|
const ForkButtonsContainer = /*#__PURE__*/_styled("div", {
|
|
@@ -36,10 +35,10 @@ const ForkButtonsContainer = /*#__PURE__*/_styled("div", {
|
|
|
36
35
|
styles: "display:flex;flex-flow:column nowrap;justify-content:space-around;align-items:center"
|
|
37
36
|
} : {
|
|
38
37
|
name: "125bg8c",
|
|
39
|
-
styles: "display:flex;flex-flow:column nowrap;justify-content:space-around;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
styles: "display:flex;flex-flow:column nowrap;justify-content:space-around;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BdXRoZW50aWNhdGlvblBhZ2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0J1QyIsImZpbGUiOiIuLi8uLi9zcmMvQXV0aGVudGljYXRpb25QYWdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBOZXRsaWZ5QXV0aGVudGljYXRvciB9IGZyb20gJ2RlY2FwLWNtcy1saWItYXV0aCc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblBhZ2UsIEljb24gfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IExvZ2luQnV0dG9uSWNvbiA9IHN0eWxlZChJY29uKWBcbiAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xuYDtcblxuY29uc3QgRm9ya0FwcHJvdmFsQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgZmxleC1ncm93OiAwLjI7XG5gO1xuY29uc3QgRm9ya0J1dHRvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2l0SHViQXV0aGVudGljYXRpb25QYWdlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvbkxvZ2luOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5ib29sLFxuICAgIGJhc2VfdXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNpdGVJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBhdXRoRW5kcG9pbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgY2xlYXJIYXNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge307XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgLy8gTWFudWFsbHkgdmFsaWRhdGUgUHJvcFR5cGVzIC0gUmVhY3QgMTkgYnJlYWtpbmcgY2hhbmdlXG4gICAgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKFxuICAgICAgR2l0SHViQXV0aGVudGljYXRpb25QYWdlLnByb3BUeXBlcyxcbiAgICAgIHRoaXMucHJvcHMsXG4gICAgICAncHJvcCcsXG4gICAgICAnR2l0SHViQXV0aGVudGljYXRpb25QYWdlJyxcbiAgICApO1xuICB9XG5cbiAgZ2V0UGVybWlzc2lvblRvRm9yayA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHJlcXVlc3RpbmdGb3JrOiB0cnVlLFxuICAgICAgICBhcHByb3ZlRm9yazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyByZXF1ZXN0aW5nRm9yazogZmFsc2UgfSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgICByZWZ1c2VGb3JrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlcXVlc3RpbmdGb3JrOiBmYWxzZSB9KTtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIGxvZ2luV2l0aE9wZW5BdXRob3JpbmcoZGF0YSkge1xuICAgIGNvbnN0IHsgYmFja2VuZCB9ID0gdGhpcy5wcm9wcztcblxuICAgIHRoaXMuc2V0U3RhdGUoeyBmaW5kaW5nRm9yazogdHJ1ZSB9KTtcbiAgICByZXR1cm4gYmFja2VuZFxuICAgICAgLmF1dGhlbnRpY2F0ZVdpdGhGb3JrKHsgdXNlckRhdGE6IGRhdGEsIGdldFBlcm1pc3Npb25Ub0Zvcms6IHRoaXMuZ2V0UGVybWlzc2lvblRvRm9yayB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaW5kaW5nRm9yazogZmFsc2UgfSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVMb2dpbiA9IGUgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBjZmcgPSB7XG4gICAgICBiYXNlX3VybDogdGhpcy5wcm9wcy5iYXNlX3VybCxcbiAgICAgIHNpdGVfaWQ6XG4gICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhvc3Quc3BsaXQoJzonKVswXSA9PT0gJ2xvY2FsaG9zdCdcbiAgICAgICAgICA/ICdkZW1vLmRlY2FwY21zLm9yZydcbiAgICAgICAgICA6IHRoaXMucHJvcHMuc2l0ZUlkLFxuICAgICAgYXV0aF9lbmRwb2ludDogdGhpcy5wcm9wcy5hdXRoRW5kcG9pbnQsXG4gICAgfTtcbiAgICBjb25zdCBhdXRoID0gbmV3IE5ldGxpZnlBdXRoZW50aWNhdG9yKGNmZyk7XG5cbiAgICBjb25zdCB7IG9wZW5fYXV0aG9yaW5nOiBvcGVuQXV0aG9yaW5nID0gZmFsc2UsIGF1dGhfc2NvcGU6IGF1dGhTY29wZSA9ICcnIH0gPVxuICAgICAgdGhpcy5wcm9wcy5jb25maWcuYmFja2VuZDtcblxuICAgIGNvbnN0IHNjb3BlID0gYXV0aFNjb3BlIHx8IChvcGVuQXV0aG9yaW5nID8gJ3B1YmxpY19yZXBvJyA6ICdyZXBvJyk7XG4gICAgYXV0aC5hdXRoZW50aWNhdGUoeyBwcm92aWRlcjogJ2dpdGh1YicsIHNjb3BlIH0sIChlcnIsIGRhdGEpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvZ2luRXJyb3I6IGVyci50b1N0cmluZygpIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAob3BlbkF1dGhvcmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dpbldpdGhPcGVuQXV0aG9yaW5nKGRhdGEpLnRoZW4oKCkgPT4gdGhpcy5wcm9wcy5vbkxvZ2luKGRhdGEpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvcHMub25Mb2dpbihkYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICByZW5kZXJMb2dpbkJ1dHRvbiA9ICgpID0+IHtcbiAgICBjb25zdCB7IGluUHJvZ3Jlc3MsIHQgfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIGluUHJvZ3Jlc3MgfHwgdGhpcy5zdGF0ZS5maW5kaW5nRm9yayA/IChcbiAgICAgIHQoJ2F1dGgubG9nZ2luZ0luJylcbiAgICApIDogKFxuICAgICAgPEZyYWdtZW50PlxuICAgICAgICA8TG9naW5CdXR0b25JY29uIHR5cGU9XCJnaXRodWJcIiAvPlxuICAgICAgICB7dCgnYXV0aC5sb2dpbldpdGhHaXRIdWInKX1cbiAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbiAgfTtcblxuICBnZXRBdXRoZW50aWNhdGlvblBhZ2VSZW5kZXJBcmdzKCkge1xuICAgIGNvbnN0IHsgcmVxdWVzdGluZ0ZvcmsgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBpZiAocmVxdWVzdGluZ0ZvcmspIHtcbiAgICAgIGNvbnN0IHsgYXBwcm92ZUZvcmssIHJlZnVzZUZvcmsgfSA9IHRoaXMuc3RhdGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZW5kZXJQYWdlQ29udGVudDogKHsgTG9naW5CdXR0b24sIFRleHRCdXR0b24sIHNob3dBYm9ydEJ1dHRvbiB9KSA9PiAoXG4gICAgICAgICAgPEZvcmtBcHByb3ZhbENvbnRhaW5lcj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBPcGVuIEF1dGhvcmluZyBpcyBlbmFibGVkOiB3ZSBuZWVkIHRvIHVzZSBhIGZvcmsgb24geW91ciBnaXRodWIgYWNjb3VudC4gKElmIGEgZm9ya1xuICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgd2UmIzM5O2xsIHVzZSB0aGF0LilcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxGb3JrQnV0dG9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPExvZ2luQnV0dG9uIG9uQ2xpY2s9e2FwcHJvdmVGb3JrfT5Gb3JrIHRoZSByZXBvPC9Mb2dpbkJ1dHRvbj5cbiAgICAgICAgICAgICAge3Nob3dBYm9ydEJ1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgPFRleHRCdXR0b24gb25DbGljaz17cmVmdXNlRm9ya30+RG9uJiMzOTt0IGZvcmsgdGhlIHJlcG88L1RleHRCdXR0b24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0ZvcmtCdXR0b25zQ29udGFpbmVyPlxuICAgICAgICAgIDwvRm9ya0FwcHJvdmFsQ29udGFpbmVyPlxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVuZGVyQnV0dG9uQ29udGVudDogdGhpcy5yZW5kZXJMb2dpbkJ1dHRvbixcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgaW5Qcm9ncmVzcywgY29uZmlnLCB0IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgbG9naW5FcnJvciwgcmVxdWVzdGluZ0ZvcmssIGZpbmRpbmdGb3JrIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBdXRoZW50aWNhdGlvblBhZ2VcbiAgICAgICAgb25Mb2dpbj17dGhpcy5oYW5kbGVMb2dpbn1cbiAgICAgICAgbG9naW5EaXNhYmxlZD17aW5Qcm9ncmVzcyB8fCBmaW5kaW5nRm9yayB8fCByZXF1ZXN0aW5nRm9ya31cbiAgICAgICAgbG9naW5FcnJvck1lc3NhZ2U9e2xvZ2luRXJyb3J9XG4gICAgICAgIGxvZ29Vcmw9e2NvbmZpZy5sb2dvX3VybH0gLy8gRGVwcmVjYXRlZCwgcmVwbGFjZWQgYnkgYGxvZ28uc3JjYFxuICAgICAgICBsb2dvPXtjb25maWcubG9nb31cbiAgICAgICAgc2l0ZVVybD17Y29uZmlnLnNpdGVfdXJsfVxuICAgICAgICB7Li4udGhpcy5nZXRBdXRoZW50aWNhdGlvblBhZ2VSZW5kZXJBcmdzKCl9XG4gICAgICAgIHQ9e3R9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */",
|
|
40
39
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
41
40
|
});
|
|
42
|
-
export default class GitHubAuthenticationPage extends
|
|
41
|
+
export default class GitHubAuthenticationPage extends Component {
|
|
43
42
|
static propTypes = {
|
|
44
43
|
onLogin: PropTypes.func.isRequired,
|
|
45
44
|
inProgress: PropTypes.bool,
|
|
@@ -126,9 +125,11 @@ export default class GitHubAuthenticationPage extends React.Component {
|
|
|
126
125
|
inProgress,
|
|
127
126
|
t
|
|
128
127
|
} = this.props;
|
|
129
|
-
return inProgress || this.state.findingFork ? t('auth.loggingIn') :
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
return inProgress || this.state.findingFork ? t('auth.loggingIn') : _jsxs(Fragment, {
|
|
129
|
+
children: [_jsx(LoginButtonIcon, {
|
|
130
|
+
type: "github"
|
|
131
|
+
}), t('auth.loginWithGitHub')]
|
|
132
|
+
});
|
|
132
133
|
};
|
|
133
134
|
getAuthenticationPageRenderArgs() {
|
|
134
135
|
const {
|
|
@@ -144,11 +145,19 @@ export default class GitHubAuthenticationPage extends React.Component {
|
|
|
144
145
|
LoginButton,
|
|
145
146
|
TextButton,
|
|
146
147
|
showAbortButton
|
|
147
|
-
}) =>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
}) => _jsxs(ForkApprovalContainer, {
|
|
149
|
+
children: [_jsx("p", {
|
|
150
|
+
children: "Open Authoring is enabled: we need to use a fork on your github account. (If a fork already exists, we'll use that.)"
|
|
151
|
+
}), _jsxs(ForkButtonsContainer, {
|
|
152
|
+
children: [_jsx(LoginButton, {
|
|
153
|
+
onClick: approveFork,
|
|
154
|
+
children: "Fork the repo"
|
|
155
|
+
}), showAbortButton && _jsx(TextButton, {
|
|
156
|
+
onClick: refuseFork,
|
|
157
|
+
children: "Don't fork the repo"
|
|
158
|
+
})]
|
|
159
|
+
})]
|
|
160
|
+
})
|
|
152
161
|
};
|
|
153
162
|
}
|
|
154
163
|
return {
|
|
@@ -166,16 +175,16 @@ export default class GitHubAuthenticationPage extends React.Component {
|
|
|
166
175
|
requestingFork,
|
|
167
176
|
findingFork
|
|
168
177
|
} = this.state;
|
|
169
|
-
return
|
|
178
|
+
return _jsx(AuthenticationPage, {
|
|
170
179
|
onLogin: this.handleLogin,
|
|
171
180
|
loginDisabled: inProgress || findingFork || requestingFork,
|
|
172
181
|
loginErrorMessage: loginError,
|
|
173
182
|
logoUrl: config.logo_url // Deprecated, replaced by `logo.src`
|
|
174
183
|
,
|
|
175
184
|
logo: config.logo,
|
|
176
|
-
siteUrl: config.site_url
|
|
177
|
-
|
|
185
|
+
siteUrl: config.site_url,
|
|
186
|
+
...this.getAuthenticationPageRenderArgs(),
|
|
178
187
|
t: t
|
|
179
|
-
})
|
|
188
|
+
});
|
|
180
189
|
}
|
|
181
190
|
}
|