hyperbook 0.63.2 → 0.65.0
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.
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.directive-alert>p {
|
|
7
|
-
margin-bottom:
|
|
7
|
+
margin-bottom: 10px;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
.directive-alert {
|
|
@@ -34,6 +34,10 @@
|
|
|
34
34
|
:first-child {
|
|
35
35
|
margin-top: 0;
|
|
36
36
|
}
|
|
37
|
+
|
|
38
|
+
:first-child.p {
|
|
39
|
+
margin-top: 10px;
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
.directive-alert.icon::before {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
hyperbook.textinput = (function () {
|
|
2
|
+
// Debounce helper to reduce database writes
|
|
3
|
+
const debounce = (func, wait) => {
|
|
4
|
+
let timeout;
|
|
5
|
+
return function executedFunction(...args) {
|
|
6
|
+
const later = () => {
|
|
7
|
+
clearTimeout(timeout);
|
|
8
|
+
func(...args);
|
|
9
|
+
};
|
|
10
|
+
clearTimeout(timeout);
|
|
11
|
+
timeout = setTimeout(later, wait);
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const init = (root) => {
|
|
16
|
+
let allTextInputs = root.querySelectorAll(".directive-textinput textarea[data-id]");
|
|
17
|
+
|
|
18
|
+
allTextInputs.forEach((textarea) => {
|
|
19
|
+
const id = textarea.getAttribute("data-id");
|
|
20
|
+
|
|
21
|
+
// Load saved text from store
|
|
22
|
+
store.textinput.get(id).then((result) => {
|
|
23
|
+
if (result && result.text) {
|
|
24
|
+
textarea.value = result.text;
|
|
25
|
+
}
|
|
26
|
+
}).catch((error) => {
|
|
27
|
+
console.error("Failed to load textinput from store:", error);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Save text to store on input with debouncing
|
|
31
|
+
const saveToStore = debounce(() => {
|
|
32
|
+
store.textinput.put({
|
|
33
|
+
id: id,
|
|
34
|
+
text: textarea.value,
|
|
35
|
+
}).catch((error) => {
|
|
36
|
+
console.error("Failed to save textinput to store:", error);
|
|
37
|
+
});
|
|
38
|
+
}, 500);
|
|
39
|
+
|
|
40
|
+
textarea.addEventListener("input", saveToStore);
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
init(document.body);
|
|
45
|
+
|
|
46
|
+
// Observe for new textinputs added to the DOM
|
|
47
|
+
const observer = new MutationObserver((mutations) => {
|
|
48
|
+
mutations.forEach((mutation) => {
|
|
49
|
+
mutation.addedNodes.forEach((node) => {
|
|
50
|
+
if (node.nodeType === 1) {
|
|
51
|
+
// Element node
|
|
52
|
+
init(node);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
init,
|
|
62
|
+
};
|
|
63
|
+
})();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.directive-textinput {
|
|
2
|
+
margin: 1rem 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.directive-textinput textarea {
|
|
6
|
+
width: 100%;
|
|
7
|
+
padding: 0.75rem;
|
|
8
|
+
font-family: inherit;
|
|
9
|
+
font-size: 1rem;
|
|
10
|
+
border: 1px solid var(--color-nav-border, #ccc);
|
|
11
|
+
border-radius: 4px;
|
|
12
|
+
resize: vertical;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
transition: border-color 0.2s;
|
|
15
|
+
background-color: var(--color-background, white);
|
|
16
|
+
color: var(--color-text, black);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.directive-textinput textarea:focus {
|
|
20
|
+
outline: none;
|
|
21
|
+
border-color: var(--color-brand, #007864);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.directive-textinput textarea::placeholder {
|
|
25
|
+
color: var(--color-text-deactivated, #999);
|
|
26
|
+
opacity: 1;
|
|
27
|
+
}
|
package/dist/assets/store.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -175225,6 +175225,12 @@ var remarkLink_default = (ctx) => () => {
|
|
|
175225
175225
|
visit(tree, (node3, index2) => {
|
|
175226
175226
|
if (typeof index2 === "number" && (node3.type === "link" || node3.type === "linkReference" || node3.type === "image" || node3.type === "imageReference" || node3.type === "definition")) {
|
|
175227
175227
|
if (node3.url) {
|
|
175228
|
+
if (node3.type === "link" && /^https?:\/\//.test(node3.url)) {
|
|
175229
|
+
if (!node3.data) node3.data = {};
|
|
175230
|
+
if (!node3.data.hProperties) node3.data.hProperties = {};
|
|
175231
|
+
node3.data.hProperties.target = "_blank";
|
|
175232
|
+
node3.data.hProperties.rel = "noopener noreferrer";
|
|
175233
|
+
}
|
|
175228
175234
|
node3.url = ctx.makeUrl(
|
|
175229
175235
|
node3.url,
|
|
175230
175236
|
"public",
|
|
@@ -183321,6 +183327,44 @@ var remarkDirectiveLearningmap_default = (ctx) => () => {
|
|
|
183321
183327
|
};
|
|
183322
183328
|
};
|
|
183323
183329
|
|
|
183330
|
+
// src/remarkDirectiveTextinput.ts
|
|
183331
|
+
var remarkDirectiveTextinput_default = (ctx) => () => {
|
|
183332
|
+
const name = "textinput";
|
|
183333
|
+
return (tree, file) => {
|
|
183334
|
+
visit(tree, function(node3) {
|
|
183335
|
+
if (isDirective(node3)) {
|
|
183336
|
+
if (node3.name !== name) return;
|
|
183337
|
+
const data = node3.data || (node3.data = {});
|
|
183338
|
+
expectLeafDirective(node3, file, name);
|
|
183339
|
+
registerDirective(file, name, ["client.js"], ["style.css"], []);
|
|
183340
|
+
const {
|
|
183341
|
+
placeholder = "",
|
|
183342
|
+
height = "200px",
|
|
183343
|
+
id = hash(node3)
|
|
183344
|
+
} = node3.attributes || {};
|
|
183345
|
+
data.hName = "div";
|
|
183346
|
+
data.hProperties = {
|
|
183347
|
+
class: "directive-textinput",
|
|
183348
|
+
"data-id": id
|
|
183349
|
+
};
|
|
183350
|
+
data.hChildren = [
|
|
183351
|
+
{
|
|
183352
|
+
type: "element",
|
|
183353
|
+
tagName: "textarea",
|
|
183354
|
+
properties: {
|
|
183355
|
+
class: "textinput",
|
|
183356
|
+
"data-id": id,
|
|
183357
|
+
placeholder,
|
|
183358
|
+
style: `height: ${height}`
|
|
183359
|
+
},
|
|
183360
|
+
children: []
|
|
183361
|
+
}
|
|
183362
|
+
];
|
|
183363
|
+
}
|
|
183364
|
+
});
|
|
183365
|
+
};
|
|
183366
|
+
};
|
|
183367
|
+
|
|
183324
183368
|
// src/process.ts
|
|
183325
183369
|
var remark = (ctx) => {
|
|
183326
183370
|
i18n.init(ctx.config.language || "en");
|
|
@@ -183364,6 +183408,7 @@ var remark = (ctx) => {
|
|
|
183364
183408
|
remarkDirectiveJSXGraph_default(ctx),
|
|
183365
183409
|
remarkDirectiveMultievent_default(ctx),
|
|
183366
183410
|
remarkDirectiveLearningmap_default(ctx),
|
|
183411
|
+
remarkDirectiveTextinput_default(ctx),
|
|
183367
183412
|
remarkCode_default(ctx),
|
|
183368
183413
|
remarkMath,
|
|
183369
183414
|
/* needs to be last directive */
|
|
@@ -183445,7 +183490,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"application/1d-interleaved-parityfec
|
|
|
183445
183490
|
/***/ ((module) => {
|
|
183446
183491
|
|
|
183447
183492
|
"use strict";
|
|
183448
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"hyperbook","version":"0.
|
|
183493
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"hyperbook","version":"0.65.0","author":"Mike Barkmin","homepage":"https://github.com/openpatch/hyperbook#readme","license":"MIT","bin":{"hyperbook":"./dist/index.js"},"files":["dist"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/openpatch/hyperbook.git","directory":"packages/hyperbook"},"bugs":{"url":"https://github.com/openpatch/hyperbook/issues"},"engines":{"node":">=12.22.0"},"scripts":{"version":"pnpm build","lint":"tsc --noEmit","dev":"ncc build ./index.ts -w -o dist/","build":"rimraf dist && ncc build ./index.ts -o ./dist/ --no-cache --no-source-map-register --external favicons --external sharp && node postbuild.mjs"},"dependencies":{"favicons":"^7.2.0"},"devDependencies":{"@hyperbook/fs":"workspace:*","@hyperbook/markdown":"workspace:*","@hyperbook/types":"workspace:*","@pnpm/exportable-manifest":"1000.0.6","@types/archiver":"6.0.3","@types/async-retry":"1.4.9","@types/cross-spawn":"6.0.6","@types/lunr":"^2.3.7","@types/prompts":"2.4.9","@types/tar":"6.1.13","@types/ws":"^8.5.14","@vercel/ncc":"0.38.3","archiver":"7.0.1","async-retry":"1.3.3","chalk":"5.4.1","chokidar":"4.0.3","commander":"12.1.0","cpy":"11.1.0","cross-spawn":"7.0.6","domutils":"^3.2.2","extract-zip":"^2.0.1","got":"12.6.0","htmlparser2":"^10.0.0","lunr":"^2.3.9","lunr-languages":"^1.14.0","mime":"^4.0.6","prompts":"2.4.2","rimraf":"6.0.1","tar":"7.4.3","update-check":"1.5.4","ws":"^8.18.0"}}');
|
|
183449
183494
|
|
|
183450
183495
|
/***/ })
|
|
183451
183496
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hyperbook",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.65.0",
|
|
4
4
|
"author": "Mike Barkmin",
|
|
5
5
|
"homepage": "https://github.com/openpatch/hyperbook#readme",
|
|
6
6
|
"license": "MIT",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"update-check": "1.5.4",
|
|
58
58
|
"ws": "^8.18.0",
|
|
59
59
|
"@hyperbook/fs": "0.20.0",
|
|
60
|
-
"@hyperbook/markdown": "0.
|
|
60
|
+
"@hyperbook/markdown": "0.39.0",
|
|
61
61
|
"@hyperbook/types": "0.18.0"
|
|
62
62
|
},
|
|
63
63
|
"scripts": {
|