@gjsify/adwaita-app 0.44.0 → 0.46.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.
- package/README.md +1 -1
- package/lib/esm/application.js +1 -1
- package/lib/esm/dialogs.js +1 -1
- package/lib/esm/file-dialog.js +1 -1
- package/lib/esm/loading-stack.js +1 -1
- package/lib/esm/locale.js +1 -1
- package/lib/esm/nav-shell.js +1 -1
- package/lib/esm/toast.js +1 -1
- package/lib/types/application.d.ts +3 -3
- package/lib/types/dialogs.d.ts +1 -1
- package/lib/types/file-dialog.d.ts +1 -1
- package/lib/types/loading-stack.d.ts +1 -1
- package/lib/types/nav-shell.d.ts +2 -2
- package/lib/types/toast.d.ts +1 -1
- package/lib/types/view-loader.d.ts +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
package/lib/esm/application.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import e from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import e from"gi://Adw?version=1";import t from"gi://Gdk?version=4.0";import n from"gi://Gio?version=2.0";import r from"gi://GObject?version=2.0";import i from"gi://Gtk?version=4.0";import a from"system";import{installDevtools as o}from"@gjsify/devtools";var s=class AdwaitaApp extends e.Application{static{r.registerClass({GTypeName:`GjsifyAdwaitaApp`},AdwaitaApp)}constructor(e){super({application_id:e.applicationId,flags:e.flags??n.ApplicationFlags.DEFAULT_FLAGS}),this._window=null,this._options=e,this._initActions(),this.connect(`startup`,()=>this._onStartup()),this.connect(`activate`,()=>this._onActivate())}_initActions(){if(this._options.quitAction!==!1){let e=new n.SimpleAction({name:`quit`});e.connect(`activate`,()=>this.quit()),this.add_action(e),this.set_accels_for_action(`app.quit`,[`<primary>q`])}if(this._options.about){let e=new n.SimpleAction({name:`about`});e.connect(`activate`,()=>this._showAbout()),this.add_action(e)}}_onStartup(){this._options.css&&this._loadCss(this._options.css),this._installDevtools(),this._options.onStartup?.(this)}_loadCss(e){let n=t.Display.get_default();if(!n){console.error(`@gjsify/adwaita-app: no default display; CSS not applied`);return}let r=new i.CssProvider;r.load_from_string(e),i.StyleContext.add_provider_for_display(n,r,i.STYLE_PROVIDER_PRIORITY_APPLICATION)}_installDevtools(){let e=this._options.devtools;if(e===!1)return;let t=typeof e==`object`?e:{enabled:e||void 0};o(this,t)}_onActivate(){this._window||=this._options.createWindow(this),this._window.present()}_showAbout(){let t=this._options.about;if(!t)return;let n=new e.AboutDialog({application_name:t.applicationName,application_icon:t.applicationIcon??this._options.applicationId});t.version&&(n.version=t.version),t.developerName&&(n.developer_name=t.developerName),t.website&&(n.website=t.website),t.issueUrl&&(n.issue_url=t.issueUrl),t.license&&(n.license=t.license),t.comments&&(n.comments=t.comments),t.copyright&&(n.copyright=t.copyright),t.developers?.length&&n.set_developers(t.developers),n.present(this.get_active_window())}};async function runAdwaitaApp(e){return runApplication(new s(e),[a.programInvocationName,...a.programArgs])}async function runApplication(e,t){let n=!1;try{e.register(null),n=e.get_is_remote()}catch{n=!1}let r=await e.runAsync(t);return n&&console.error(`${e.applicationId??`This application`} is already running — brought the existing instance to the front instead of opening a second window.`),r}r.type_ensure(s.$gtype);export{s as AdwaitaApp,runAdwaitaApp,runApplication};
|
package/lib/esm/dialogs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import{resolveDefaultResponse as e}from"./dialog-model.js";import t from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import{resolveDefaultResponse as e}from"./dialog-model.js";import t from"gi://Adw?version=1";function confirmDialog(n,r){let i=e(r.defaultResponse);return new Promise(e=>{let a=new t.AlertDialog({heading:r.heading,body:r.body??``});a.add_response(`cancel`,r.cancelLabel??`Cancel`),a.add_response(`confirm`,r.confirmLabel??`OK`),a.set_response_appearance(`confirm`,r.destructive?t.ResponseAppearance.DESTRUCTIVE:t.ResponseAppearance.SUGGESTED),a.set_default_response(i),a.set_close_response(`cancel`),a.connect(`response`,(t,n)=>e(n===`confirm`)),a.present(n)})}function errorDialog(e,n,r,i){return new Promise(a=>{let o=new t.AlertDialog({heading:n,body:r??``});o.add_response(`ok`,i??`OK`),o.set_default_response(`ok`),o.set_close_response(`ok`),o.connect(`response`,()=>a()),o.present(e)})}export{confirmDialog,errorDialog};
|
package/lib/esm/file-dialog.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import e from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import e from"gi://Gio?version=2.0";import t from"gi://Gtk?version=4.0";function buildFilters(n){if(!n?.length)return;let r=new e.ListStore({itemType:t.FileFilter.$gtype});for(let e of n){let n=new t.FileFilter;n.set_name(e.name);for(let t of e.patterns??[])n.add_pattern(t);for(let t of e.mimeTypes??[])n.add_mime_type(t);r.append(n)}return r}function pickFile(e,n={}){return new Promise(r=>{let i=new t.FileDialog({title:n.title??`Open File`}),a=buildFilters(n.filters);a&&i.set_filters(a),i.open(e,null,(e,t)=>{try{r(i.open_finish(t)?.get_path()??null)}catch{r(null)}})})}function saveFile(e,n={}){return new Promise(r=>{let i=new t.FileDialog({title:n.title??`Save File`});n.initialName&&i.set_initial_name(n.initialName);let a=buildFilters(n.filters);a&&i.set_filters(a),i.save(e,null,(e,t)=>{try{r(i.save_finish(t)?.get_path()??null)}catch{r(null)}})})}export{pickFile,saveFile};
|
package/lib/esm/loading-stack.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import e from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import e from"gi://Adw?version=1";import t from"gi://GObject?version=2.0";import n from"gi://Gtk?version=4.0";var r=class LoadingStack extends n.Stack{static{t.registerClass({GTypeName:`GjsifyLoadingStack`},LoadingStack)}constructor(t={}){super(t);let r=new n.Box({orientation:n.Orientation.VERTICAL,halign:n.Align.CENTER,valign:n.Align.CENTER,hexpand:!0,vexpand:!0});r.append(new e.Spinner),this.add_named(r,`loading`),this._content=new e.Bin({hexpand:!0,vexpand:!0}),this.add_named(this._content,`content`),this._error=new e.StatusPage({iconName:`dialog-error-symbolic`,title:`Something went wrong`}),this.add_named(this._error,`error`),this.set_visible_child_name(`loading`)}setContent(e){this._content.set_child(e)}setError(e,t){this._error.set_title(e),this._error.set_description(t??``)}showLoading(){this.set_visible_child_name(`loading`)}showContent(){this.set_visible_child_name(`content`)}showError(){this.set_visible_child_name(`error`)}};t.type_ensure(r.$gtype);export{r as LoadingStack};
|
package/lib/esm/locale.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import{resolveLocaleDir as e}from"./locale-dir.js";import t from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import{resolveLocaleDir as e}from"./locale-dir.js";import t from"gi://GLib?version=2.0";import n from"gettext";function initLocale(r,i={}){let a=e({...i,env:{GJSIFY_LOCALE_DIR:t.getenv(`GJSIFY_LOCALE_DIR`)??void 0}});return n.setlocale(n.LocaleCategory.ALL,``),n.bindtextdomain(r,a),n.textdomain(r),Object.assign(e=>n.dgettext(r,e),{plural:(e,t,i)=>n.dngettext(r,e,t,i),context:(e,t)=>n.dpgettext(r,e,t),localeDir:a,domain:r})}export{initLocale};
|
package/lib/esm/nav-shell.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import e from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import e from"gi://Adw?version=1";import t from"gi://Gtk?version=4.0";function buildNavRow(e){let n=new t.ListBoxRow,r=new t.Box({orientation:t.Orientation.HORIZONTAL,spacing:12,marginTop:8,marginBottom:8,marginStart:12,marginEnd:12});e.icon&&r.append(new t.Image({iconName:e.icon}));let i=new t.Box({orientation:t.Orientation.VERTICAL,hexpand:!0});return i.append(new t.Label({label:e.label,xalign:0})),e.subtitle&&i.append(new t.Label({label:e.subtitle,xalign:0,cssClasses:[`dim-label`,`caption`]})),r.append(i),n.set_child(r),n}function createNavShell(n,r){let i=new e.NavigationSplitView,a=new t.Stack({transitionType:t.StackTransitionType.CROSSFADE,hexpand:!0,vexpand:!0}),o=new t.ListBox({cssClasses:[`navigation-sidebar`]}),s=new e.HeaderBar,c=new e.HeaderBar;r.sidebarTitle&&c.set_title_widget(new e.WindowTitle({title:r.sidebarTitle,subtitle:``})),r.sidebarHeaderStart&&c.pack_start(r.sidebarHeaderStart),r.sidebarHeaderEnd&&c.pack_end(r.sidebarHeaderEnd);let l=new e.ToolbarView;l.add_top_bar(c),l.set_content(o),i.set_sidebar(new e.NavigationPage({title:r.sidebarTitle??`Menu`,child:l}));let u=new e.ToolbarView;u.add_top_bar(s),u.set_content(a),i.set_content(new e.NavigationPage({title:r.sidebarTitle??``,child:u}));for(let e of r.items)o.append(buildNavRow(e));o.connect(`row-selected`,(e,t)=>{if(!t)return;let n=t.get_index(),a=r.items[n];a&&(r.onSelect(a,n),i.get_collapsed()&&i.set_show_content(!0))});let d=r.collapseWidth??720,f=e.BreakpointCondition.parse(`max-width: ${d}px`);if(f){let t=new e.Breakpoint({condition:f});t.add_setter(i,`collapsed`,!0),n.add_breakpoint(t)}let selectByIndex=e=>{let t=o.get_row_at_index(e);t&&o.select_row(t)};return{widget:i,stack:a,contentHeader:s,selectByIndex,selectById(e){let t=r.items.findIndex(t=>t.id===e);selectByIndex(t>=0?t:0)}}}export{createNavShell};
|
package/lib/esm/toast.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./_virtual/_rolldown/runtime.js";import e from"
|
|
1
|
+
import"./_virtual/_rolldown/runtime.js";import e from"gi://Adw?version=1";let t=null;function registerToastOverlay(e){t=e}function showToast(n,r=3){if(!t){console.warn(`@gjsify/adwaita-app: showToast() before registerToastOverlay()`);return}t.add_toast(new e.Toast({title:n,timeout:r}))}export{registerToastOverlay,showToast};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Adw from '
|
|
2
|
-
import Gio from '
|
|
3
|
-
import Gtk from '
|
|
1
|
+
import Adw from 'gi://Adw?version=1';
|
|
2
|
+
import Gio from 'gi://Gio?version=2.0';
|
|
3
|
+
import Gtk from 'gi://Gtk?version=4.0';
|
|
4
4
|
import { type InstallDevtoolsOptions } from '@gjsify/devtools';
|
|
5
5
|
import type { AboutInfo } from './types.js';
|
|
6
6
|
/** Options for {@link AdwaitaApp} / {@link runAdwaitaApp}. */
|
package/lib/types/dialogs.d.ts
CHANGED
package/lib/types/nav-shell.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Adw from '
|
|
2
|
-
import Gtk from '
|
|
1
|
+
import Adw from 'gi://Adw?version=1';
|
|
2
|
+
import Gtk from 'gi://Gtk?version=4.0';
|
|
3
3
|
import type { NavItem } from './types.js';
|
|
4
4
|
/** Options for {@link createNavShell}. */
|
|
5
5
|
export interface NavShellOptions {
|
package/lib/types/toast.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/adwaita-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"description": "Native Adwaita application shell for GJS/GTK apps — Adw.Application lifecycle (runAsync + devtools + CSS), a data-driven NavigationSplitView nav shell, an async-view mounter, and promise dialog/toast/file helpers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -39,19 +39,19 @@
|
|
|
39
39
|
"framework"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@girs/adw-1": "
|
|
43
|
-
"@girs/gdk-4.0": "
|
|
44
|
-
"@girs/gio-2.0": "
|
|
45
|
-
"@girs/gjs": "
|
|
46
|
-
"@girs/glib-2.0": "
|
|
47
|
-
"@girs/gobject-2.0": "
|
|
48
|
-
"@girs/gtk-4.0": "
|
|
49
|
-
"@gjsify/devtools": "^0.
|
|
42
|
+
"@girs/adw-1": "4.6.0",
|
|
43
|
+
"@girs/gdk-4.0": "4.6.0",
|
|
44
|
+
"@girs/gio-2.0": "4.6.0",
|
|
45
|
+
"@girs/gjs": "4.6.0",
|
|
46
|
+
"@girs/glib-2.0": "4.6.0",
|
|
47
|
+
"@girs/gobject-2.0": "4.6.0",
|
|
48
|
+
"@girs/gtk-4.0": "4.6.0",
|
|
49
|
+
"@gjsify/devtools": "^0.46.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@gjsify/cli": "^0.
|
|
53
|
-
"@gjsify/storybook": "^0.
|
|
54
|
-
"@gjsify/unit": "^0.
|
|
52
|
+
"@gjsify/cli": "^0.46.0",
|
|
53
|
+
"@gjsify/storybook": "^0.46.0",
|
|
54
|
+
"@gjsify/unit": "^0.46.0",
|
|
55
55
|
"@types/node": "^25.9.2",
|
|
56
56
|
"typescript": "^6.0.3"
|
|
57
57
|
},
|