PageSourceSearch

https://yani.ai/js/talks.js

js yani.ai collected 2026-10-05 13:20:02 UTC 3,594 bytes, 72 lines download raw bytes

1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4    return new (P || (P = Promise))(function (resolve, reject) {
5        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8        step((generator = generator.apply(thisArg, _arguments || [])).next());
9    });
10};
11function loadTalks() {
12    return __awaiter(this, void 0, void 0, function* () {
13        try {
14            const response = yield fetch('_data/talks.yml');
15            if (!response.ok) {
16                throw new Error(`HTTP error! status: ${response.status}`);
17            }
18            const yamlText = yield response.text();
19            const talks = jsyaml.load(yamlText);
20            const talksContainer = document.querySelector('#talks .row');
21            if (!talksContainer) {
22                console.error('Talks container not found');
23                return;
24            }
25            talksContainer.innerHTML = ''; // Clear existing talks
26            for (const talk of talks) {
27                const talkElement = document.createElement('div');
28                talkElement.className = 'col-md-6 mb-4';
29                let innerHtml;
30                if (talk.image && talk.url) {
31                    innerHtml = `
32                    <div class="card">
33                        <div class="row g-0">
34                            <div class="col-md-8">
35                                <div class="card-body">
36                                    <h5 class="card-title">${talk.title}</h5>
37                                    <p class="card-text"><small class="text-muted">${talk.location}</small></p>
38                                    <p class="card-text">${talk.date}</p>
39                                </div>
40                            </div>
41                            <div class="col-md-4 d-flex align-items-center">
42                                <div class="text-center">
43                                    <a href="${talk.url}"><img src="${talk.image}" class="img-fluid rounded-end"/></a>
44                                    ${talk.video ? `<br/><a href="${talk.video}" class="btn btn-link btn-sm">Video</a>` : ''}
45                                </div>
46                            </div>
47                        </div>
48                    </div>
49                `;
50                }
51                else {
52                    innerHtml = `
53                    <div class="card">
54                        <div class="card-body">
55                            <h5 class="card-title">${talk.title}</h5>
56                            <p class="card-text"><small class="text-muted">${talk.location}</small></p>
57                            <p class="card-text">${talk.date}</p>
58                            ${talk.video ? `<a href="${talk.video}" class="btn btn-primary btn-sm mt-2">Video</a>` : ''}
59                        </div>
60                    </div>
61                `;
62                }
63                talkElement.innerHTML = innerHtml;
64                talksContainer.appendChild(talkElement);
65            }
66        }
67        catch (error) {
68            console.error('Failed to load talks:', error);
69        }
70    });
71}
72document.addEventListener('DOMContentLoaded', loadTalks);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.