diff --git a/dist/extension.zip b/dist/extension.zip index ca6f857..a5764e6 100644 Binary files a/dist/extension.zip and b/dist/extension.zip differ diff --git a/dist/extension/birb.js b/dist/extension/birb.js index 8da2977..bfd23de 100644 --- a/dist/extension/birb.js +++ b/dist/extension/birb.js @@ -1209,7 +1209,7 @@ class MenuItem { /** - * @param {string} text + * @param {string|(() => string)} text * @param {() => void} action * @param {boolean} [removeMenu] */ @@ -1258,7 +1258,7 @@ if (item instanceof Separator) { return makeElement("birb-window-separator"); } - let menuItem = makeElement("birb-menu-item", item.text); + let menuItem = makeElement("birb-menu-item", typeof item.text === "function" ? item.text() : item.text); onClick(menuItem, () => { if (item.removeMenu) { removeMenuCallback(); @@ -1365,7 +1365,8 @@ * @typedef {typeof DEFAULT_SETTINGS} Settings */ const DEFAULT_SETTINGS = { - birbMode: false + birbMode: false, + soundEnabled: true }; // Rendering constants @@ -1578,6 +1579,7 @@ .birb-menu-item { width: calc(100% - var(--birb-double-border-size)); + white-space: nowrap; font-size: 14px; padding-top: 4px; padding-bottom: 4px; @@ -1850,7 +1852,11 @@ const settingsItems = [ new MenuItem("Go Back", () => switchMenuItems(menuItems, updateMenuLocation), false), new Separator(), - new MenuItem("Toggle Birb Mode", () => { + new MenuItem(() => `${userSettings.soundEnabled ? "Disable" : "Enable"} Sound`, () => { + userSettings.soundEnabled = !userSettings.soundEnabled; + save(); + }), + new MenuItem(() => `Toggle ${birdBirb(true)} Mode`, () => { userSettings.birbMode = !userSettings.birbMode; save(); const message = makeElement("birb-message-content"); @@ -1969,8 +1975,8 @@ /** * Bird or birb, you decide */ - function birdBirb() { - return settings().birbMode ? "Birb" : "Bird"; + function birdBirb(invert = false) { + return settings().birbMode !== invert ? "Birb" : "Bird"; } function init() { @@ -2559,7 +2565,9 @@ function pet() { if (currentState === States.IDLE && birb.getCurrentAnimation() !== Animations.HEART) { - birdsong.chirp(); + if (settings().soundEnabled) { + birdsong.chirp(); + } birb.setAnimation(Animations.HEART); lastPetTimestamp = Date.now(); } diff --git a/dist/obsidian/main.js b/dist/obsidian/main.js index edee0f1..9bdb7fc 100644 --- a/dist/obsidian/main.js +++ b/dist/obsidian/main.js @@ -1252,7 +1252,7 @@ module.exports = class PocketBird extends Plugin { class MenuItem { /** - * @param {string} text + * @param {string|(() => string)} text * @param {() => void} action * @param {boolean} [removeMenu] */ @@ -1301,7 +1301,7 @@ module.exports = class PocketBird extends Plugin { if (item instanceof Separator) { return makeElement("birb-window-separator"); } - let menuItem = makeElement("birb-menu-item", item.text); + let menuItem = makeElement("birb-menu-item", typeof item.text === "function" ? item.text() : item.text); onClick(menuItem, () => { if (item.removeMenu) { removeMenuCallback(); @@ -1408,7 +1408,8 @@ module.exports = class PocketBird extends Plugin { * @typedef {typeof DEFAULT_SETTINGS} Settings */ const DEFAULT_SETTINGS = { - birbMode: false + birbMode: false, + soundEnabled: true }; // Rendering constants @@ -1621,6 +1622,7 @@ module.exports = class PocketBird extends Plugin { .birb-menu-item { width: calc(100% - var(--birb-double-border-size)); + white-space: nowrap; font-size: 14px; padding-top: 4px; padding-bottom: 4px; @@ -1893,7 +1895,11 @@ module.exports = class PocketBird extends Plugin { const settingsItems = [ new MenuItem("Go Back", () => switchMenuItems(menuItems, updateMenuLocation), false), new Separator(), - new MenuItem("Toggle Birb Mode", () => { + new MenuItem(() => `${userSettings.soundEnabled ? "Disable" : "Enable"} Sound`, () => { + userSettings.soundEnabled = !userSettings.soundEnabled; + save(); + }), + new MenuItem(() => `Toggle ${birdBirb(true)} Mode`, () => { userSettings.birbMode = !userSettings.birbMode; save(); const message = makeElement("birb-message-content"); @@ -2012,8 +2018,8 @@ module.exports = class PocketBird extends Plugin { /** * Bird or birb, you decide */ - function birdBirb() { - return settings().birbMode ? "Birb" : "Bird"; + function birdBirb(invert = false) { + return settings().birbMode !== invert ? "Birb" : "Bird"; } function init() { @@ -2602,7 +2608,9 @@ module.exports = class PocketBird extends Plugin { function pet() { if (currentState === States.IDLE && birb.getCurrentAnimation() !== Animations.HEART) { - birdsong.chirp(); + if (settings().soundEnabled) { + birdsong.chirp(); + } birb.setAnimation(Animations.HEART); lastPetTimestamp = Date.now(); } diff --git a/dist/userscript/birb.user.js b/dist/userscript/birb.user.js index fc3ebd8..a757130 100644 --- a/dist/userscript/birb.user.js +++ b/dist/userscript/birb.user.js @@ -1214,7 +1214,7 @@ class MenuItem { /** - * @param {string} text + * @param {string|(() => string)} text * @param {() => void} action * @param {boolean} [removeMenu] */ @@ -1263,7 +1263,7 @@ if (item instanceof Separator) { return makeElement("birb-window-separator"); } - let menuItem = makeElement("birb-menu-item", item.text); + let menuItem = makeElement("birb-menu-item", typeof item.text === "function" ? item.text() : item.text); onClick(menuItem, () => { if (item.removeMenu) { removeMenuCallback(); @@ -1370,7 +1370,8 @@ * @typedef {typeof DEFAULT_SETTINGS} Settings */ const DEFAULT_SETTINGS = { - birbMode: false + birbMode: false, + soundEnabled: true }; // Rendering constants @@ -1583,6 +1584,7 @@ .birb-menu-item { width: calc(100% - var(--birb-double-border-size)); + white-space: nowrap; font-size: 14px; padding-top: 4px; padding-bottom: 4px; @@ -1855,7 +1857,11 @@ const settingsItems = [ new MenuItem("Go Back", () => switchMenuItems(menuItems, updateMenuLocation), false), new Separator(), - new MenuItem("Toggle Birb Mode", () => { + new MenuItem(() => `${userSettings.soundEnabled ? "Disable" : "Enable"} Sound`, () => { + userSettings.soundEnabled = !userSettings.soundEnabled; + save(); + }), + new MenuItem(() => `Toggle ${birdBirb(true)} Mode`, () => { userSettings.birbMode = !userSettings.birbMode; save(); const message = makeElement("birb-message-content"); @@ -1974,8 +1980,8 @@ /** * Bird or birb, you decide */ - function birdBirb() { - return settings().birbMode ? "Birb" : "Bird"; + function birdBirb(invert = false) { + return settings().birbMode !== invert ? "Birb" : "Bird"; } function init() { @@ -2564,7 +2570,9 @@ function pet() { if (currentState === States.IDLE && birb.getCurrentAnimation() !== Animations.HEART) { - birdsong.chirp(); + if (settings().soundEnabled) { + birdsong.chirp(); + } birb.setAnimation(Animations.HEART); lastPetTimestamp = Date.now(); } diff --git a/dist/web/birb.embed.js b/dist/web/birb.embed.js index 83a0d9f..2d2927e 100644 --- a/dist/web/birb.embed.js +++ b/dist/web/birb.embed.js @@ -1194,7 +1194,7 @@ class MenuItem { /** - * @param {string} text + * @param {string|(() => string)} text * @param {() => void} action * @param {boolean} [removeMenu] */ @@ -1243,7 +1243,7 @@ if (item instanceof Separator) { return makeElement("birb-window-separator"); } - let menuItem = makeElement("birb-menu-item", item.text); + let menuItem = makeElement("birb-menu-item", typeof item.text === "function" ? item.text() : item.text); onClick(menuItem, () => { if (item.removeMenu) { removeMenuCallback(); @@ -1350,7 +1350,8 @@ * @typedef {typeof DEFAULT_SETTINGS} Settings */ const DEFAULT_SETTINGS = { - birbMode: false + birbMode: false, + soundEnabled: true }; // Rendering constants @@ -1563,6 +1564,7 @@ .birb-menu-item { width: calc(100% - var(--birb-double-border-size)); + white-space: nowrap; font-size: 14px; padding-top: 4px; padding-bottom: 4px; @@ -1835,7 +1837,11 @@ const settingsItems = [ new MenuItem("Go Back", () => switchMenuItems(menuItems, updateMenuLocation), false), new Separator(), - new MenuItem("Toggle Birb Mode", () => { + new MenuItem(() => `${userSettings.soundEnabled ? "Disable" : "Enable"} Sound`, () => { + userSettings.soundEnabled = !userSettings.soundEnabled; + save(); + }), + new MenuItem(() => `Toggle ${birdBirb(true)} Mode`, () => { userSettings.birbMode = !userSettings.birbMode; save(); const message = makeElement("birb-message-content"); @@ -1954,8 +1960,8 @@ /** * Bird or birb, you decide */ - function birdBirb() { - return settings().birbMode ? "Birb" : "Bird"; + function birdBirb(invert = false) { + return settings().birbMode !== invert ? "Birb" : "Bird"; } function init() { @@ -2544,7 +2550,9 @@ function pet() { if (currentState === States.IDLE && birb.getCurrentAnimation() !== Animations.HEART) { - birdsong.chirp(); + if (settings().soundEnabled) { + birdsong.chirp(); + } birb.setAnimation(Animations.HEART); lastPetTimestamp = Date.now(); } diff --git a/dist/web/birb.js b/dist/web/birb.js index 83a0d9f..2d2927e 100644 --- a/dist/web/birb.js +++ b/dist/web/birb.js @@ -1194,7 +1194,7 @@ class MenuItem { /** - * @param {string} text + * @param {string|(() => string)} text * @param {() => void} action * @param {boolean} [removeMenu] */ @@ -1243,7 +1243,7 @@ if (item instanceof Separator) { return makeElement("birb-window-separator"); } - let menuItem = makeElement("birb-menu-item", item.text); + let menuItem = makeElement("birb-menu-item", typeof item.text === "function" ? item.text() : item.text); onClick(menuItem, () => { if (item.removeMenu) { removeMenuCallback(); @@ -1350,7 +1350,8 @@ * @typedef {typeof DEFAULT_SETTINGS} Settings */ const DEFAULT_SETTINGS = { - birbMode: false + birbMode: false, + soundEnabled: true }; // Rendering constants @@ -1563,6 +1564,7 @@ .birb-menu-item { width: calc(100% - var(--birb-double-border-size)); + white-space: nowrap; font-size: 14px; padding-top: 4px; padding-bottom: 4px; @@ -1835,7 +1837,11 @@ const settingsItems = [ new MenuItem("Go Back", () => switchMenuItems(menuItems, updateMenuLocation), false), new Separator(), - new MenuItem("Toggle Birb Mode", () => { + new MenuItem(() => `${userSettings.soundEnabled ? "Disable" : "Enable"} Sound`, () => { + userSettings.soundEnabled = !userSettings.soundEnabled; + save(); + }), + new MenuItem(() => `Toggle ${birdBirb(true)} Mode`, () => { userSettings.birbMode = !userSettings.birbMode; save(); const message = makeElement("birb-message-content"); @@ -1954,8 +1960,8 @@ /** * Bird or birb, you decide */ - function birdBirb() { - return settings().birbMode ? "Birb" : "Bird"; + function birdBirb(invert = false) { + return settings().birbMode !== invert ? "Birb" : "Bird"; } function init() { @@ -2544,7 +2550,9 @@ function pet() { if (currentState === States.IDLE && birb.getCurrentAnimation() !== Animations.HEART) { - birdsong.chirp(); + if (settings().soundEnabled) { + birdsong.chirp(); + } birb.setAnimation(Animations.HEART); lastPetTimestamp = Date.now(); } diff --git a/src/application.js b/src/application.js index 40263ba..4443cc4 100644 --- a/src/application.js +++ b/src/application.js @@ -61,7 +61,8 @@ import { * @typedef {typeof DEFAULT_SETTINGS} Settings */ const DEFAULT_SETTINGS = { - birbMode: false + birbMode: false, + soundEnabled: true }; // Rendering constants @@ -177,7 +178,11 @@ function startApplication(birbPixels, featherPixels) { const settingsItems = [ new MenuItem("Go Back", () => switchMenuItems(menuItems, updateMenuLocation), false), new Separator(), - new MenuItem("Toggle Birb Mode", () => { + new MenuItem(() => `${userSettings.soundEnabled ? "Disable" : "Enable"} Sound`, () => { + userSettings.soundEnabled = !userSettings.soundEnabled; + save(); + }), + new MenuItem(() => `Toggle ${birdBirb(true)} Mode`, () => { userSettings.birbMode = !userSettings.birbMode; save(); const message = makeElement("birb-message-content"); @@ -296,8 +301,8 @@ function startApplication(birbPixels, featherPixels) { /** * Bird or birb, you decide */ - function birdBirb() { - return settings().birbMode ? "Birb" : "Bird"; + function birdBirb(invert = false) { + return settings().birbMode !== invert ? "Birb" : "Bird"; } function init() { @@ -900,7 +905,9 @@ function startApplication(birbPixels, featherPixels) { function pet() { if (currentState === States.IDLE && birb.getCurrentAnimation() !== Animations.HEART) { - birdsong.chirp(); + if (settings().soundEnabled) { + birdsong.chirp(); + } birb.setAnimation(Animations.HEART); lastPetTimestamp = Date.now(); } diff --git a/src/menu.js b/src/menu.js index 1d67c18..09b7878 100644 --- a/src/menu.js +++ b/src/menu.js @@ -12,7 +12,7 @@ export const MENU_EXIT_ID = "birb-menu-exit"; export class MenuItem { /** - * @param {string} text + * @param {string|(() => string)} text * @param {() => void} action * @param {boolean} [removeMenu] */ @@ -61,7 +61,7 @@ function makeMenuItem(item, removeMenuCallback) { if (item instanceof Separator) { return makeElement("birb-window-separator"); } - let menuItem = makeElement("birb-menu-item", item.text); + let menuItem = makeElement("birb-menu-item", typeof item.text === "function" ? item.text() : item.text); onClick(menuItem, () => { if (item.removeMenu) { removeMenuCallback(); diff --git a/src/stylesheet.css b/src/stylesheet.css index fd82706..917c0b8 100644 --- a/src/stylesheet.css +++ b/src/stylesheet.css @@ -198,6 +198,7 @@ .birb-menu-item { width: calc(100% - var(--birb-double-border-size)); + white-space: nowrap; font-size: 14px; padding-top: 4px; padding-bottom: 4px;