@gjsify/adwaita-core 0.64.12-next.281 → 0.64.13-next.283

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.
Files changed (46) hide show
  1. package/lib/esm/action-row.js +1 -1
  2. package/lib/esm/conformance/action-row.js +1 -1
  3. package/lib/esm/conformance/expander-row.js +1 -0
  4. package/lib/esm/conformance/index.js +1 -1
  5. package/lib/esm/conformance/label-markup.js +1 -0
  6. package/lib/esm/conformance/label.js +1 -1
  7. package/lib/esm/conformance/list.js +1 -1
  8. package/lib/esm/conformance/rows.js +1 -1
  9. package/lib/esm/conformance/split-button.js +1 -1
  10. package/lib/esm/default-translate.js +1 -0
  11. package/lib/esm/glib.js +1 -1
  12. package/lib/esm/gtk-platform.js +1 -1
  13. package/lib/esm/index.js +1 -1
  14. package/lib/esm/label-markup.js +1 -0
  15. package/lib/esm/label.js +1 -1
  16. package/lib/esm/list.js +1 -1
  17. package/lib/esm/option-list.js +1 -0
  18. package/lib/esm/pango-markup.js +1 -1
  19. package/lib/esm/rows.js +1 -1
  20. package/lib/esm/split-button.js +1 -1
  21. package/lib/types/action-row.d.ts +5 -1
  22. package/lib/types/conformance/action-row.d.ts +28 -0
  23. package/lib/types/conformance/expander-row.d.ts +40 -0
  24. package/lib/types/conformance/index.d.ts +10 -6
  25. package/lib/types/conformance/label-markup.d.ts +73 -0
  26. package/lib/types/conformance/list.d.ts +46 -39
  27. package/lib/types/conformance/rows.d.ts +62 -2
  28. package/lib/types/conformance/split-button.d.ts +7 -3
  29. package/lib/types/default-translate.d.ts +6 -0
  30. package/lib/types/default-translate.spec.d.ts +2 -0
  31. package/lib/types/engine.d.ts +40 -6
  32. package/lib/types/glib.d.ts +40 -0
  33. package/lib/types/glib.spec.d.ts +2 -0
  34. package/lib/types/gtk-platform.d.ts +9 -0
  35. package/lib/types/index.d.ts +13 -7
  36. package/lib/types/label-markup.d.ts +129 -0
  37. package/lib/types/label-markup.spec.d.ts +2 -0
  38. package/lib/types/label.d.ts +6 -0
  39. package/lib/types/list-view.d.ts +4 -4
  40. package/lib/types/list.d.ts +9 -23
  41. package/lib/types/option-list.d.ts +128 -0
  42. package/lib/types/option-list.spec.d.ts +2 -0
  43. package/lib/types/pango-markup.d.ts +47 -2
  44. package/lib/types/rows.d.ts +193 -65
  45. package/lib/types/split-button.d.ts +28 -6
  46. package/package.json +4 -4
@@ -1 +1 @@
1
- import"./_virtual/_rolldown/runtime.js";import{stringIsNotEmpty as e}from"./glib.js";function deriveRowLabels(t){let n=t.title??``,r=t.subtitle??``;return{title:n,titleVisible:e(n),subtitle:r,subtitleVisible:e(r)}}var ActionRowState=class{constructor(){this._title=``,this._subtitle=``,this._activatableWidget=null,this._activatable=!1,this._widgetSensitive=!0}get state(){return{...deriveRowLabels({title:this._title,subtitle:this._subtitle}),activatable:this._activatable}}get title(){return this._title}setTitle(e){let t=e??``;return t===this._title?!1:(this._title=t,!0)}get subtitle(){return this._subtitle}setSubtitle(e){let t=e??``;return t===this._subtitle?!1:(this._subtitle=t,!0)}get activatableWidget(){return this._activatableWidget}setActivatableWidget(e,t=!0){return e===this._activatableWidget?!1:(this._activatableWidget=e,this._widgetSensitive=t,e!==null&&(this._activatable=t),!0)}setActivatableWidgetSensitive(e){if(this._activatableWidget===null)return!1;let t=!!e;return t===this._widgetSensitive?!1:(this._widgetSensitive=t,this.setActivatable(t))}get activatable(){return this._activatable}setActivatable(e){let t=!!e;return t===this._activatable?!1:(this._activatable=t,!0)}activate(){return this._activatableWidget}},SwitchRowState=class{constructor(){this._active=!1}get active(){return this._active}setActive(e){let t=!!e;return t===this._active?!1:(this._active=t,!0)}activate(){return this.setActive(!this._active)}};const t=!0;var ButtonRowState=class{constructor(){this._title=``,this._startIconName=``,this._endIconName=``}get state(){return{title:this._title,titleVisible:e(this._title),startIconName:this._startIconName,startIconVisible:e(this._startIconName),endIconName:this._endIconName,endIconVisible:e(this._endIconName),activatable:!0}}get title(){return this._title}setTitle(e){let t=e??``;return t===this._title?!1:(this._title=t,!0)}get startIconName(){return this._startIconName}setStartIconName(e){let t=e??``;return t===this._startIconName?!1:(this._startIconName=t,!0)}get endIconName(){return this._endIconName}setEndIconName(e){let t=e??``;return t===this._endIconName?!1:(this._endIconName=t,!0)}},WindowTitleState=class{constructor(){this._title=``,this._subtitle=``}get state(){return deriveRowLabels({title:this._title,subtitle:this._subtitle})}get title(){return this._title}setTitle(e){let t=e??``;return t===this._title?!1:(this._title=t,!0)}get subtitle(){return this._subtitle}setSubtitle(e){let t=e??``;return t===this._subtitle?!1:(this._subtitle=t,!0)}};export{ActionRowState,t as BUTTON_ROW_ACTIVATABLE,ButtonRowState,SwitchRowState,WindowTitleState,deriveRowLabels};
1
+ import"./_virtual/_rolldown/runtime.js";import{adwSubtitleWriteNotifies as e,stringIsNotEmpty as t}from"./glib.js";function deriveRowLabels(e){let n=e.title??``,r=e.subtitle??``;return{title:n,titleVisible:t(n),subtitle:r,subtitleVisible:t(r)}}var ActionRowState=class{constructor(){this._title=``,this._subtitle=``,this._activatableWidget=null,this._activatable=!1,this._widgetSensitive=!0}get state(){return{...deriveRowLabels({title:this._title,subtitle:this._subtitle}),activatable:this._activatable}}get title(){return this._title}setTitle(e){let t=e??``;return t===this._title?!1:(this._title=t,!0)}get subtitle(){return this._subtitle}setSubtitle(t){let n=e(this._subtitle,t);return this._subtitle=t??``,n}get activatableWidget(){return this._activatableWidget}setActivatableWidget(e,t=!0){return e===this._activatableWidget?!1:(this._activatableWidget=e,this._widgetSensitive=t,e!==null&&(this._activatable=t),!0)}setActivatableWidgetSensitive(e){if(this._activatableWidget===null)return!1;let t=!!e;return t===this._widgetSensitive?!1:(this._widgetSensitive=t,this.setActivatable(t))}get activatable(){return this._activatable}setActivatable(e){let t=!!e;return t===this._activatable?!1:(this._activatable=t,!0)}activate(){return this._activatableWidget}},SwitchRowState=class{constructor(){this._active=!1}get active(){return this._active}setActive(e){let t=!!e;return t===this._active?!1:(this._active=t,!0)}activate(){return this.setActive(!this._active)}};const n=!0;var ButtonRowState=class{constructor(){this._title=``,this._startIconName=``,this._endIconName=``}get state(){return{title:this._title,titleVisible:t(this._title),startIconName:this._startIconName,startIconVisible:t(this._startIconName),endIconName:this._endIconName,endIconVisible:t(this._endIconName),activatable:!0}}get title(){return this._title}setTitle(e){let t=e??``;return t===this._title?!1:(this._title=t,!0)}get startIconName(){return this._startIconName}setStartIconName(e){let t=e??``;return t===this._startIconName?!1:(this._startIconName=t,!0)}get endIconName(){return this._endIconName}setEndIconName(e){let t=e??``;return t===this._endIconName?!1:(this._endIconName=t,!0)}},WindowTitleState=class{constructor(){this._title=``,this._subtitle=``}get state(){return deriveRowLabels({title:this._title,subtitle:this._subtitle})}get title(){return this._title}setTitle(e){let t=e??``;return t===this._title?!1:(this._title=t,!0)}get subtitle(){return this._subtitle}setSubtitle(e){let t=e??``;return t===this._subtitle?!1:(this._subtitle=t,!0)}};export{ActionRowState,n as BUTTON_ROW_ACTIVATABLE,ButtonRowState,SwitchRowState,WindowTitleState,deriveRowLabels};
@@ -1 +1 @@
1
- const e=[{text:`Wi-Fi`,visible:!0,rule:`an ordinary label shows`},{text:``,visible:!1,rule:`the EMPTY string hides the label — the half both ports dropped for titles`},{text:null,visible:!1,rule:"an unset property hides it too (`string &&` guards the NULL)"},{text:` `,visible:!0,rule:"ONE SPACE IS VISIBLE — `string[0]` reads a byte, it never trims"},{text:` `,visible:!0,rule:`any non-NUL first byte counts, tabs included`},{text:`0`,visible:!0,rule:`a falsy-looking string is still a string`},{text:`Ελληνικά`,visible:!0,rule:`non-ASCII is not special — the check is on the first byte`}],t=[{name:`default`,steps:[],activatable:!1,activatableWidget:null,rule:`the template starts unactivatable (adw-action-row.ui:5)`},{name:`sensitive-widget-activates`,steps:[{op:`set-activatable-widget`,widget:`switch`}],activatable:!0,activatableWidget:`switch`,rule:`SYNC_CREATE copies the widget’s sensitive (TRUE) into activatable`},{name:`insensitive-widget-does-not-activate`,steps:[{op:`set-activatable-widget`,widget:`switch`,sensitive:!1}],activatable:!1,activatableWidget:`switch`,rule:`the bind reads sensitive — an insensitive widget leaves the row unactivatable`},{name:`sensitive-flip-follows`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-widget-sensitive`,sensitive:!1}],activatable:!1,activatableWidget:`switch`,rule:`the binding is LIVE — desensitising the widget deactivates the row`},{name:`unsetting-keeps-activatable`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable-widget`,widget:null}],activatable:!0,activatableWidget:null,rule:`clearing only unbinds (C:709) — “unsetting it won’t change the row’s activatability”`},{name:`unbound-sensitivity-is-inert`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable-widget`,widget:null},{op:`set-widget-sensitive`,sensitive:!1}],activatable:!0,activatableWidget:null,rule:`with no widget there is no binding left to carry a sensitive change`},{name:`rebinding-resyncs`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable-widget`,widget:null},{op:`set-activatable-widget`,widget:`button`,sensitive:!1}],activatable:!1,activatableWidget:`button`,rule:`a new binding re-syncs from the NEW widget, sticky value and all`},{name:`direct-write-lands`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable`,activatable:!1}],activatable:!1,activatableWidget:`switch`,rule:`the binding is one-way, so a direct write is not refused`},{name:`direct-write-is-overwritten`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable`,activatable:!1},{op:`set-widget-sensitive`,sensitive:!1},{op:`set-widget-sensitive`,sensitive:!0}],activatable:!0,activatableWidget:`switch`,rule:`…and the next sensitive CHANGE overwrites it, because the source wins`},{name:`unchanged-sensitive-does-not-re-assert`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable`,activatable:!1},{op:`set-widget-sensitive`,sensitive:!0}],activatable:!1,activatableWidget:`switch`,rule:`a re-write of the sensitive it already had emits no notify, so the binding carries nothing`}],n=[{name:`default`,steps:[],active:!1,emitted:[],rule:`the pspec default is FALSE (C:141-143)`},{name:`programmatic-set-notifies`,steps:[{op:`set-active`,active:!0}],active:!0,emitted:[!0],rule:`a programmatic set reaches the slider, whose notify is the row’s notify`},{name:`unchanged-set-is-silent`,steps:[{op:`set-active`,active:!1}],active:!1,emitted:[],rule:`the equality early-return at C:224-225 fires before anything is written`},{name:`repeat-set-is-silent`,steps:[{op:`set-active`,active:!0},{op:`set-active`,active:!0}],active:!0,emitted:[!0],rule:`only the first of two identical sets changes anything`},{name:`activate-row-toggles`,steps:[{op:`activate-row`}],active:!0,emitted:[!0],rule:`activating the row inverts the state — the row IS the switch’s label`},{name:`activate-row-toggles-back`,steps:[{op:`activate-row`},{op:`activate-row`}],active:!1,emitted:[!0,!1],rule:`and it inverts again, notifying each time`},{name:`mixed-paths-notify-alike`,steps:[{op:`set-active`,active:!0},{op:`activate-row`},{op:`set-active`,active:!0}],active:!0,emitted:[!0,!1,!0],rule:"one notify path for both origins — no `interactive` flag exists here"}],r=[{startIconName:null,endIconName:null,startIconVisible:!1,endIconVisible:!1,rule:`both default to "" (C:255-256) and both images stay hidden`},{startIconName:`list-add-symbolic`,endIconName:null,startIconVisible:!0,endIconVisible:!1,rule:`a leading icon alone`},{startIconName:null,endIconName:`go-next-symbolic`,startIconVisible:!1,endIconVisible:!0,rule:`a TRAILING icon alone — the property neither renderer had`},{startIconName:`document-open-symbolic`,endIconName:`external-link-symbolic`,startIconVisible:!0,endIconVisible:!0,rule:`both at once, the "Open in Files ›" shape the property exists for`},{startIconName:``,endIconName:``,startIconVisible:!1,endIconVisible:!1,rule:`the empty string hides an icon exactly like an unset one`}],i=[{declared:null,activatable:!0,rule:`nothing declared — the template value stands`},{declared:``,activatable:!0,rule:`a bare attribute changes nothing, there is nothing to change`},{declared:`false`,activatable:!0,rule:`THE INVENTED OPT-OUT: libadwaita has no such switch`},{declared:`true`,activatable:!0,rule:`and no such switch in the other direction either`}],a=[{name:`default`,steps:[],title:``,titleVisible:!1,subtitle:``,subtitleVisible:!1,notified:[],rule:"both labels start `visible=False` (adw-window-title.ui:15, :26)"},{name:`title-only`,steps:[{op:`set-title`,value:`Documents`}],title:`Documents`,titleVisible:!0,subtitle:``,subtitleVisible:!1,notified:[`title`],rule:`a header bar with no subtitle must not reserve a subtitle line`},{name:`subtitle-only`,steps:[{op:`set-subtitle`,value:`3 selected`}],title:``,titleVisible:!1,subtitle:`3 selected`,subtitleVisible:!0,notified:[`subtitle`],rule:`THE TITLE HIDES TOO — the rule neither renderer applied to the title`},{name:`both`,steps:[{op:`set-title`,value:`Documents`},{op:`set-subtitle`,value:`3 selected`}],title:`Documents`,titleVisible:!0,subtitle:`3 selected`,subtitleVisible:!0,notified:[`title`,`subtitle`],rule:`the ordinary two-line case`},{name:`cleared-title-hides-again`,steps:[{op:`set-title`,value:`Documents`},{op:`set-title`,value:``}],title:``,titleVisible:!1,subtitle:``,subtitleVisible:!1,notified:[`title`,`title`],rule:`clearing is a change, so it hides AND notifies`},{name:`unchanged-set-is-silent`,steps:[{op:`set-title`,value:`Documents`},{op:`set-title`,value:`Documents`}],title:`Documents`,titleVisible:!0,subtitle:``,subtitleVisible:!1,notified:[`title`],rule:"the `g_strcmp0` early-return at C:203-204 drops the second set"},{name:`space-title-stays-visible`,steps:[{op:`set-title`,value:` `}],title:` `,titleVisible:!0,subtitle:``,subtitleVisible:!1,notified:[`title`],rule:"`title && title[0]` reads one byte — a space is a visible title"},{name:`null-over-empty-is-silent`,steps:[{op:`set-title`,value:null}],title:``,titleVisible:!1,subtitle:``,subtitleVisible:!1,notified:[],rule:'DIVERGENCE: libadwaita notifies here, via `g_strcmp0 ("", NULL) == 1`'}];export{t as ACTION_ROW_ACTIVATION_VECTORS,i as BUTTON_ROW_ACTIVATABLE_VECTORS,r as BUTTON_ROW_ICON_VECTORS,e as LABEL_VISIBILITY_VECTORS,n as SWITCH_ROW_NOTIFY_VECTORS,a as WINDOW_TITLE_VECTORS};
1
+ const e=[{text:`Wi-Fi`,visible:!0,rule:`an ordinary label shows`},{text:``,visible:!1,rule:`the EMPTY string hides the label — the half both ports dropped for titles`},{text:null,visible:!1,rule:"an unset property hides it too (`string &&` guards the NULL)"},{text:` `,visible:!0,rule:"ONE SPACE IS VISIBLE — `string[0]` reads a byte, it never trims"},{text:` `,visible:!0,rule:`any non-NUL first byte counts, tabs included`},{text:`0`,visible:!0,rule:`a falsy-looking string is still a string`},{text:`Ελληνικά`,visible:!0,rule:`non-ASCII is not special — the check is on the first byte`}],t=[{name:`default`,steps:[],activatable:!1,activatableWidget:null,rule:`the template starts unactivatable (adw-action-row.ui:5)`},{name:`sensitive-widget-activates`,steps:[{op:`set-activatable-widget`,widget:`switch`}],activatable:!0,activatableWidget:`switch`,rule:`SYNC_CREATE copies the widget’s sensitive (TRUE) into activatable`},{name:`insensitive-widget-does-not-activate`,steps:[{op:`set-activatable-widget`,widget:`switch`,sensitive:!1}],activatable:!1,activatableWidget:`switch`,rule:`the bind reads sensitive — an insensitive widget leaves the row unactivatable`},{name:`sensitive-flip-follows`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-widget-sensitive`,sensitive:!1}],activatable:!1,activatableWidget:`switch`,rule:`the binding is LIVE — desensitising the widget deactivates the row`},{name:`unsetting-keeps-activatable`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable-widget`,widget:null}],activatable:!0,activatableWidget:null,rule:`clearing only unbinds (C:709) — “unsetting it won’t change the row’s activatability”`},{name:`unbound-sensitivity-is-inert`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable-widget`,widget:null},{op:`set-widget-sensitive`,sensitive:!1}],activatable:!0,activatableWidget:null,rule:`with no widget there is no binding left to carry a sensitive change`},{name:`rebinding-resyncs`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable-widget`,widget:null},{op:`set-activatable-widget`,widget:`button`,sensitive:!1}],activatable:!1,activatableWidget:`button`,rule:`a new binding re-syncs from the NEW widget, sticky value and all`},{name:`direct-write-lands`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable`,activatable:!1}],activatable:!1,activatableWidget:`switch`,rule:`the binding is one-way, so a direct write is not refused`},{name:`direct-write-is-overwritten`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable`,activatable:!1},{op:`set-widget-sensitive`,sensitive:!1},{op:`set-widget-sensitive`,sensitive:!0}],activatable:!0,activatableWidget:`switch`,rule:`…and the next sensitive CHANGE overwrites it, because the source wins`},{name:`unchanged-sensitive-does-not-re-assert`,steps:[{op:`set-activatable-widget`,widget:`switch`},{op:`set-activatable`,activatable:!1},{op:`set-widget-sensitive`,sensitive:!0}],activatable:!1,activatableWidget:`switch`,rule:`a re-write of the sensitive it already had emits no notify, so the binding carries nothing`}],n=[{name:`default`,steps:[],active:!1,emitted:[],rule:`the pspec default is FALSE (C:141-143)`},{name:`programmatic-set-notifies`,steps:[{op:`set-active`,active:!0}],active:!0,emitted:[!0],rule:`a programmatic set reaches the slider, whose notify is the row’s notify`},{name:`unchanged-set-is-silent`,steps:[{op:`set-active`,active:!1}],active:!1,emitted:[],rule:`the equality early-return at C:224-225 fires before anything is written`},{name:`repeat-set-is-silent`,steps:[{op:`set-active`,active:!0},{op:`set-active`,active:!0}],active:!0,emitted:[!0],rule:`only the first of two identical sets changes anything`},{name:`activate-row-toggles`,steps:[{op:`activate-row`}],active:!0,emitted:[!0],rule:`activating the row inverts the state — the row IS the switch’s label`},{name:`activate-row-toggles-back`,steps:[{op:`activate-row`},{op:`activate-row`}],active:!1,emitted:[!0,!1],rule:`and it inverts again, notifying each time`},{name:`mixed-paths-notify-alike`,steps:[{op:`set-active`,active:!0},{op:`activate-row`},{op:`set-active`,active:!0}],active:!0,emitted:[!0,!1,!0],rule:"one notify path for both origins — no `interactive` flag exists here"}],r=[{startIconName:null,endIconName:null,startIconVisible:!1,endIconVisible:!1,rule:`both default to "" (C:255-256) and both images stay hidden`},{startIconName:`list-add-symbolic`,endIconName:null,startIconVisible:!0,endIconVisible:!1,rule:`a leading icon alone`},{startIconName:null,endIconName:`go-next-symbolic`,startIconVisible:!1,endIconVisible:!0,rule:`a TRAILING icon alone — the property neither renderer had`},{startIconName:`document-open-symbolic`,endIconName:`external-link-symbolic`,startIconVisible:!0,endIconVisible:!0,rule:`both at once, the "Open in Files ›" shape the property exists for`},{startIconName:``,endIconName:``,startIconVisible:!1,endIconVisible:!1,rule:`the empty string hides an icon exactly like an unset one`}],i=[{declared:null,activatable:!0,rule:`nothing declared — the template value stands`},{declared:``,activatable:!0,rule:`a bare attribute changes nothing, there is nothing to change`},{declared:`false`,activatable:!0,rule:`THE INVENTED OPT-OUT: libadwaita has no such switch`},{declared:`true`,activatable:!0,rule:`and no such switch in the other direction either`}],a=[{name:`default`,steps:[],title:``,titleVisible:!1,subtitle:``,subtitleVisible:!1,notified:[],rule:"both labels start `visible=False` (adw-window-title.ui:15, :26)"},{name:`title-only`,steps:[{op:`set-title`,value:`Documents`}],title:`Documents`,titleVisible:!0,subtitle:``,subtitleVisible:!1,notified:[`title`],rule:`a header bar with no subtitle must not reserve a subtitle line`},{name:`subtitle-only`,steps:[{op:`set-subtitle`,value:`3 selected`}],title:``,titleVisible:!1,subtitle:`3 selected`,subtitleVisible:!0,notified:[`subtitle`],rule:`THE TITLE HIDES TOO — the rule neither renderer applied to the title`},{name:`both`,steps:[{op:`set-title`,value:`Documents`},{op:`set-subtitle`,value:`3 selected`}],title:`Documents`,titleVisible:!0,subtitle:`3 selected`,subtitleVisible:!0,notified:[`title`,`subtitle`],rule:`the ordinary two-line case`},{name:`cleared-title-hides-again`,steps:[{op:`set-title`,value:`Documents`},{op:`set-title`,value:``}],title:``,titleVisible:!1,subtitle:``,subtitleVisible:!1,notified:[`title`,`title`],rule:`clearing is a change, so it hides AND notifies`},{name:`unchanged-set-is-silent`,steps:[{op:`set-title`,value:`Documents`},{op:`set-title`,value:`Documents`}],title:`Documents`,titleVisible:!0,subtitle:``,subtitleVisible:!1,notified:[`title`],rule:"the `g_strcmp0` early-return at C:203-204 drops the second set"},{name:`space-title-stays-visible`,steps:[{op:`set-title`,value:` `}],title:` `,titleVisible:!0,subtitle:``,subtitleVisible:!1,notified:[`title`],rule:"`title && title[0]` reads one byte — a space is a visible title"},{name:`null-over-empty-is-silent`,steps:[{op:`set-title`,value:null}],title:``,titleVisible:!1,subtitle:``,subtitleVisible:!1,notified:[],rule:'DIVERGENCE: libadwaita notifies here, via `g_strcmp0 ("", NULL) == 1`'}],o=[{name:`null-notifies-every-time`,steps:[{write:null,notified:!0,subtitle:``},{write:null,notified:!0,subtitle:``}],rule:`g_strcmp0 ("", NULL) != 0, so a NULL write is never the early return`},{name:`empty-is-idempotent-on-a-fresh-row`,steps:[{write:``,notified:!1,subtitle:``},{write:``,notified:!1,subtitle:``}],rule:`the label text and the write are both "": the guard returns`},{name:`empty-after-null-is-silent`,steps:[{write:null,notified:!0,subtitle:``},{write:``,notified:!1,subtitle:``}],rule:`null left the label at "", so "" has nothing to change`},{name:`text-notifies-once`,steps:[{write:`x`,notified:!0,subtitle:`x`},{write:`x`,notified:!1,subtitle:`x`}],rule:`an ordinary string is idempotent`},{name:`clearing-with-null-or-empty`,steps:[{write:`x`,notified:!0,subtitle:`x`},{write:null,notified:!0,subtitle:``},{write:`x`,notified:!0,subtitle:`x`},{write:``,notified:!0,subtitle:``}],rule:`either clears a held subtitle, and each is a real change`}];export{t as ACTION_ROW_ACTIVATION_VECTORS,o as ACTION_ROW_SUBTITLE_VECTORS,i as BUTTON_ROW_ACTIVATABLE_VECTORS,r as BUTTON_ROW_ICON_VECTORS,e as LABEL_VISIBILITY_VECTORS,n as SWITCH_ROW_NOTIFY_VECTORS,a as WINDOW_TITLE_VECTORS};
@@ -0,0 +1 @@
1
+ const e={expanded:!1,enableExpansion:!0},t=[{name:`a full round through disabling and re-enabling (C:264, 303-312)`,steps:[{op:`expanded`,value:!0,notified:[`expanded`],expanded:!0,enableExpansion:!0,rule:`expanding an enabled row notifies expanded only`},{op:`expanded`,value:!0,notified:[],expanded:!0,enableExpansion:!0,rule:`the same value again is a no-op`},{op:`enable-expansion`,value:!0,notified:[],expanded:!0,enableExpansion:!0,rule:`enabling an enabled row returns before the store, so it neither notifies nor re-expands`},{op:`enable-expansion`,value:!1,notified:[`expanded`,`enable-expansion`],expanded:!1,enableExpansion:!1,rule:`disabling COLLAPSES, and the derived property notifies FIRST`},{op:`enable-expansion`,value:!1,notified:[],expanded:!1,enableExpansion:!1,rule:`disabling a disabled row is a no-op`},{op:`expanded`,value:!0,notified:[],expanded:!1,enableExpansion:!1,rule:`expanded = true while disabled coerces to false over the held false: refused, silent`},{op:`expanded`,value:!1,notified:[],expanded:!1,enableExpansion:!1,rule:`expanded = false while disabled is the held value again: silent`},{op:`enable-expansion`,value:!0,notified:[`expanded`,`enable-expansion`],expanded:!0,enableExpansion:!0,rule:`enabling EXPANDS, even though nobody asked for it — set_expanded (enable_expansion)`},{op:`enable-expansion`,value:!0,notified:[],expanded:!0,enableExpansion:!0,rule:`enabling an enabled row is a no-op`},{op:`expanded`,value:!1,notified:[`expanded`],expanded:!1,enableExpansion:!0,rule:`collapsing an enabled row notifies expanded only`},{op:`expanded`,value:!1,notified:[],expanded:!1,enableExpansion:!0,rule:`collapsing a collapsed row is a no-op`}]},{name:`disabling a collapsed row`,steps:[{op:`enable-expansion`,value:!1,notified:[`enable-expansion`],expanded:!1,enableExpansion:!1,rule:`set_expanded (FALSE) over a held FALSE is the equal-return, so expanded stays silent`}]}],n=[{expanded:!0,enableExpansion:!1,resultExpanded:!1,rule:`a disabled row cannot be constructed open`},{expanded:!0,enableExpansion:!0,resultExpanded:!0,rule:`an enabled row can`},{expanded:!1,enableExpansion:!1,resultExpanded:!1,rule:`disabled and collapsed is just disabled`}];export{n as EXPANDER_ROW_CONSTRUCT_VECTORS,e as EXPANDER_ROW_INITIAL,t as EXPANDER_ROW_VECTORS};
@@ -1 +1 @@
1
- import{ABOUT_DIALOG_DOOR_VECTORS as e,RELEASE_NOTES_VECTORS as t,driveAboutDialogDoorVectors as n,driveReleaseNotesVectors as r}from"./about-dialog-doors.js";import{ABOUT_DIALOG_CREDITS_LEGAL_VECTORS as i,ABOUT_DIALOG_DETAILS_VECTORS as a,ABOUT_DIALOG_HEADER_VECTORS as o,ABOUT_DIALOG_LABEL_VECTORS as s,ABOUT_DIALOG_SUPPORT_VECTORS as c,ACKNOWLEDGEMENT_SECTIONS_VECTORS as l,CREDITS_SECTIONS_VECTORS as u,CREDIT_PERSON_VECTORS as d,LEGAL_SECTIONS_VECTORS as f,LEGAL_SECTION_VECTORS as p,LICENSE_INFO_VECTORS as m,LICENSE_SETTER_VECTORS as h,LICENSE_SPDX_VECTORS as g,LICENSE_TEXT_VECTORS as _,TRANSLATOR_CREDITS_VECTORS as v}from"./about-dialog.js";import{ACCENT_COLOR_VECTORS as y,NEAREST_ACCENT_VECTORS as b}from"./accent.js";import{ACTION_ROW_ACTIVATION_VECTORS as x,BUTTON_ROW_ACTIVATABLE_VECTORS as S,BUTTON_ROW_ICON_VECTORS as C,LABEL_VISIBILITY_VECTORS as w,SWITCH_ROW_NOTIFY_VECTORS as T,WINDOW_TITLE_VECTORS as E}from"./action-row.js";import{ADJUSTMENT_AUTHORED_VECTORS as D,ADJUSTMENT_PARSE_VECTORS as O,ADJUSTMENT_SNAP_VECTORS as k}from"./adjustment.js";import{APPEARANCE_HANDOFF_VECTORS as A}from"./appearance.js";import{APPLICATION_ROWS as j,APPLICATION_VECTORS as M,driveApplicationVectors as N,unlockedVfuncNames as P,unprovenVfuncs as F}from"./application.js";import{AVATAR_COLOR_VECTORS as I,AVATAR_FONT_SIZE_VECTORS as L,AVATAR_ICON_SIZE_VECTORS as R,AVATAR_INITIALS_VECTORS as z,AVATAR_MODE_VECTORS as B}from"./avatar.js";import{BANNER_BUTTON_STYLE_PARSE_VECTORS as V,BANNER_BUTTON_STYLE_VECTORS as H,BANNER_BUTTON_TEXT_VECTORS as U,BANNER_BUTTON_VISIBLE_VECTORS as W,BANNER_DEFAULT_VECTORS as G}from"./banner.js";import{BOX_ALL_VECTORS as K,BOX_ROW_VECTORS as q,BOX_SELECT_VECTORS as J}from"./box-selection.js";import{BOX_ORIENTATION_VECTORS as Y,BOX_SPACING_VECTORS as X}from"./box.js";import{BREAKPOINT_PICK_VECTORS as Z,BREAKPOINT_TRANSITION_VECTORS as Q}from"./breakpoint-bin.js";import{BUTTON_CONTENT_DEFAULT_VECTORS as $,BUTTON_CONTENT_ELLIPSIZE_VECTORS as ee,BUTTON_CONTENT_ICON_VECTORS as te,BUTTON_CONTENT_LABEL_VECTORS as ne,BUTTON_CONTENT_STYLE_TARGET_VECTORS as re,BUTTON_CONTENT_TEXT_VECTORS as ie}from"./button-content.js";import{BUTTON_STYLE_CLASS_VECTORS as ae}from"./button.js";import{CALENDAR_DAYS_VECTORS as oe,CALENDAR_MARK_VECTORS as se,CALENDAR_NAVIGATION_VECTORS as ce,CALENDAR_SELECT_VECTORS as le,CALENDAR_STEP_VECTORS as ue,CALENDAR_WEEK_VECTORS as de}from"./calendar.js";import{CAROUSEL_DOOR_VECTORS as fe,driveCarouselDoorVectors as pe}from"./carousel-doors.js";import{CAROUSEL_CLAMP_VECTORS as me,CAROUSEL_NAVIGATE_VECTORS as he,CAROUSEL_PAGE_ALLOCATION_VECTORS as ge,CAROUSEL_PAGE_AT_POSITION_VECTORS as _e,CAROUSEL_PAGE_LIST_VECTORS as ve,CAROUSEL_PROPERTY_DEFAULT_VECTORS as ye,CAROUSEL_RANGE_VECTORS as be,CAROUSEL_REORDER_SHIFT_VECTORS as xe,CAROUSEL_REVEAL_VECTORS as Se,CAROUSEL_SIZES_FROM_SNAP_POINTS_VECTORS as Ce,CAROUSEL_SNAP_POINT_VECTORS as we,CAROUSEL_WHEEL_LOCKOUT_VECTORS as Te,CAROUSEL_WHEEL_VECTORS as Ee}from"./carousel.js";import{CHECK_GROUP_VECTORS as De,driveCheckGroupVectors as Oe}from"./check-group.js";import{RADIO_GROUP_VECTORS as ke}from"./checks.js";import{CLAMP_ALLOCATE_VECTORS as Ae,CLAMP_CHILD_SIZE_VECTORS as je,CLAMP_PROPERTY_VECTORS as Me,CLAMP_SIZE_FROM_CHILD_VECTORS as Ne,CLAMP_THRESHOLD_VECTORS as Pe,SPINNER_GEOMETRY_VECTORS as Fe,SPINNER_SIZE_VECTORS as Ie,TOOLBAR_VIEW_ALLOCATE_VECTORS as Le,TOOLBAR_VIEW_CLASS_VECTORS as Re,TOOLBAR_VIEW_CONTENT_FOR_SIZE_VECTORS as ze,TOOLBAR_VIEW_MEASURE_VECTORS as Be}from"./chrome.js";import{ENTRY_MAX_LENGTH_VECTORS as Ve,ENTRY_ROW_ACTIVATION_VECTORS as He,ENTRY_ROW_GUARD_VECTORS as Ue,ENTRY_ROW_STATE_VECTORS as We,ENTRY_TEXT_LENGTH_VECTORS as Ge,PASSWORD_ENTRY_ROW_VECTORS as Ke,PASSWORD_REVEAL_GUARD_VECTORS as qe}from"./entry-row.js";import{SHARED_TREE_BLOCKS_WITHOUT_EXPECTATIONS as Je,SHARED_TREE_TABLES as Ye,authoredNodes as Xe,authoredTags as Ze,reachedTables as Qe,sharedTreeExpectations as $e,sharedTreePlacements as et,subjectIndexOf as tt,withoutPlacements as nt}from"./shared-trees.js";import{BREAKPOINT_VECTOR_SIZES as rt,CONSTRUCT_KINDS as it,CONSTRUCT_VECTORS as at,EXTERN_VECTOR_CLASS as ot,UnsupportedConstructError as st,assertTreeConstructs as ct,constructUsesOf as lt,driveConstructVectors as ut}from"./constructs.js";import{DATA_GRID_CELL_TEXT_VECTORS as dt,DATA_GRID_COLUMN_CLASS_VECTORS as ft,DATA_GRID_COLUMN_NORMALIZE_VECTORS as pt,DATA_GRID_INTERACTIVE_VECTORS as mt,DATA_GRID_TRACK_VECTORS as ht,DATA_GRID_VARIANT_VECTORS as gt}from"./data-grid.js";import{BOTTOM_SHEET_BOTTOM_BAR_VECTORS as _t,BOTTOM_SHEET_CLOSE_VECTORS as vt,BOTTOM_SHEET_OPEN_VECTORS as yt,BOTTOM_SHEET_PRESENTATION_VECTORS as bt,BOTTOM_SHEET_SWIPE_TRACKER_VECTORS as xt,runBottomSheetBottomBarSteps as St,runBottomSheetSteps as Ct}from"./dialog.js";import{FILE_CHOOSER_ROWS as wt,FILE_CHOOSER_VECTORS as Tt,driveFileChooserVectors as Et,promisifyFileChooser as Dt}from"./file-chooser.js";import{GDK_CLIPBOARD_ROWS as Ot,GDK_CLIPBOARD_VECTORS as kt,driveGdkClipboardVectors as At}from"./gdk-clipboard.js";import{GIO_APP_INFO_ROWS as jt,GIO_APP_INFO_VECTORS as Mt,driveGioAppInfoVectors as Nt}from"./gio-app-info.js";import{GIO_RESOURCE_ROWS as Pt,GIO_RESOURCE_VECTORS as Ft,driveGioResourceVectors as It,gioResourceFixtures as Lt}from"./gio-resource.js";import{GLIB_LANGUAGE_ROWS as Rt,GLIB_LANGUAGE_TAG_ROWS as zt,GLIB_LANGUAGE_TAG_VECTORS as Bt,GLIB_LANGUAGE_VECTORS as Vt,driveGLibLanguageTagVectors as Ht,driveGLibLanguageVectors as Ut}from"./glib-language.js";import{GLIB_PATH_ROWS as Wt,GLIB_PATH_VECTORS as Gt,driveGLibPathVectors as Kt}from"./glib-paths.js";import{GLIB_TIMER_ROWS as qt,GLIB_TIMER_VECTORS as Jt,driveGLibTimerVectors as Yt}from"./glib-timers.js";import{GLIB_UNICHAR_ROWS as Xt,GLIB_UNICHAR_VECTORS as Zt,driveGLibUnicharVectors as Qt}from"./glib-unichar.js";import{GLIB_URI_ROWS as $t,GLIB_URI_VECTORS as en,driveGLibUriVectors as tn}from"./glib-uri.js";import{GLIB_VARIANT_ROWS as nn,GLIB_VARIANT_VECTORS as rn,driveGLibVariantVectors as an}from"./glib-variant.js";import{GOBJECT_ROWS as on,GOBJECT_VECTORS as sn,driveGObjectVectors as cn}from"./gobject.js";import{GRID_NAVIGATION_GEOMETRY as ln,GRID_NAVIGATION_VECTORS as un}from"./grid-navigation.js";import{GTK_CSS_PIXEL_TOLERANCE as dn,GTK_CSS_ROWS as fn,GTK_CSS_VECTORS as pn,driveGtkCssVectors as mn}from"./gtk-css.js";import{GTK_PLATFORM_ROWS as hn,GTK_PLATFORM_VECTORS as gn,driveGtkPlatformVectors as _n}from"./gtk-platform.js";import{HEADER_BAR_PACK_VECTORS as vn,HEADER_BAR_TITLE_SOURCE_VECTORS as yn,HEADER_BAR_TITLE_WIDGET_VECTORS as bn}from"./header-bar.js";import{ICON_FIXTURE_PATH as xn,ICON_THEME_RESOURCE_ROWS as Sn,ICON_THEME_RESOURCE_VECTORS as Cn,driveIconThemeResourceVectors as wn}from"./icon-theme-resources.js";import{ROW_ACCESSOR_VECTORS as Tn,driveRowAccessorVectors as En}from"./row-accessors.js";import{COMBO_CHOOSER_VECTORS as Dn,COMBO_SELECTION_VECTORS as On,TOGGLE_ACTIVE_NAME_VECTORS as kn}from"./rows.js";import{VIEW_STACK_ICON_NAME_VECTORS as An,VIEW_STACK_PAGE_VECTORS as jn,VIEW_STACK_VECTORS as Mn}from"./view-stack.js";import{NAVIGATION_VIEW_VECTORS as Nn,collectNavigationState as Pn,navigationEventLog as Fn,runNavigationSteps as In}from"./navigation-view.js";import{SIDEBAR_ACTIVATION_VECTORS as Ln,SIDEBAR_CLAMP_VECTORS as Rn,SIDEBAR_FILTER_VECTORS as zn,SIDEBAR_ITEMS_CHANGED_VECTORS as Bn,SIDEBAR_ITEM_FLAG_VECTORS as Vn,SIDEBAR_MODEL_VECTORS as Hn,SIDEBAR_MODE_VECTORS as Un}from"./sidebar.js";import{ADW_LENGTH_UNIT_VECTORS as Wn,GLIB_CLAMP_VECTORS as Gn,NATURAL_SIDEBAR_WIDTH_VECTORS as Kn,NAVIGATION_ACTION_VECTORS as qn,NAVIGATION_SPLIT_VIEW_LAYOUT_VECTORS as Jn,NAVIGATION_STACK_VECTORS as Yn,OVERLAY_COLLAPSE_VECTORS as Xn,OVERLAY_SPLIT_VIEW_LAYOUT_VECTORS as Zn,OVERLAY_SWIPE_AREA_VECTORS as Qn,OVERLAY_SWIPE_CANCEL_VECTORS as $n,OVERLAY_SWIPE_RELEASE_VECTORS as er,OVERLAY_SWIPE_SNAP_POINT_VECTORS as tr,OVERLAY_SWIPE_START_VECTORS as nr,SIDEBAR_BOUNDS_VECTORS as rr,SIDEBAR_WIDTH_VECTORS as ir,SPLIT_VIEW_MEASURE_VECTORS as ar,TAGS_CONFLICT_VECTORS as or}from"./split-view.js";import{MENU_BUTTON_DIRECTION_VECTORS as sr,SPLIT_BUTTON_CONTENT_VECTORS as cr,SPLIT_BUTTON_DIRECTION_VECTORS as lr,SPLIT_BUTTON_DROPDOWN_VECTORS as ur,SPLIT_BUTTON_MENU_ACTIVATION_VECTORS as dr,SPLIT_BUTTON_ROOT_STATE_VECTORS as fr,SPLIT_BUTTON_STYLE_CLASS_VECTORS as pr,SPLIT_BUTTON_TOOLTIP_VECTORS as mr}from"./split-button.js";import{LIST_ITEMS_CHANGED_VECTORS as hr,LIST_MODEL_OWNERSHIP_VECTORS as gr,LIST_NORMALIZE_VECTORS as _r,LIST_PARSE_VECTORS as vr,LIST_SELECTION_CLAMP_VECTORS as yr,TAB_PAGES_ITEMS_CHANGED_VECTORS as br,applyListReadback as xr,replayTabPagesAsSplices as Sr}from"./list.js";import{COLUMN_VIEW_SORT_VECTORS as Cr,GRID_VIEW_COLUMN_VECTORS as wr,LIST_VIEW_SELECT_VECTORS as Tr}from"./list-view.js";import{TREE_EXPANDER_LAYOUT_VECTORS as Er,TREE_EXPANDER_SHORTCUT_VECTORS as Dr}from"./tree-expander.js";import{MENU_DETAILED_ACTION_VECTORS as Or,MENU_FLATTEN_VECTORS as kr,MENU_ITEM_STATE_VECTORS as Ar,MENU_LABEL_TEXT_VECTORS as jr,MENU_NORMALIZE_VECTORS as Mr,MENU_PARSE_VECTORS as Nr,MENU_REFUSAL_VECTORS as Pr}from"./menu.js";import{INLINE_TOGGLE_VECTORS as Fr,INLINE_TOOLTIP_VECTORS as Ir,VIEW_SWITCHER_BADGE_VECTORS as Lr,VIEW_SWITCHER_BAR_REVEAL_VECTORS as Rr,VIEW_SWITCHER_BAR_VECTORS as zr,VIEW_SWITCHER_BUTTON_VECTORS as Br,VIEW_SWITCHER_BUTTON_VISIBILITY_VECTORS as Vr,VIEW_SWITCHER_DRAG_VECTORS as Hr,VIEW_SWITCHER_ICON_VECTORS as Ur,VIEW_SWITCHER_MNEMONIC_VECTORS as Wr,VIEW_SWITCHER_REBUILD_VECTORS as Gr,VIEW_SWITCHER_SELECTION_VECTORS as Kr,VIEW_SWITCHER_SIDEBAR_SECTION_VECTORS as qr,createViewSwitcherClock as Jr}from"./view-switcher.js";import{TABS_REVEALED_VECTORS as Yr,TAB_CLOSE_VISIBLE_VECTORS as Xr,TAB_DESCENDANT_VECTORS as Zr,TAB_ICON_STATE_VECTORS as Qr,TAB_PAGE_DESCRIPTOR_VECTORS as $r,TAB_SEARCH_VECTORS as ei,TAB_SUCCESSOR_VECTORS as ti,TAB_TOOLTIP_VECTORS as ni,TAB_VIEW_VECTORS as ri,applyTabViewOp as ii,seedTabViewPages as ai,tabViewClosing as oi,tabViewOrder as si}from"./tab-view.js";import{CASE_FOLD_VECTORS as ci,MAKE_COMPARABLE_VECTORS as li,PREFERENCES_GROUP_HEADER_VECTORS as ui,PREFERENCES_SEARCH_PAGES as di,PREFERENCES_SEARCH_VECTORS as fi,ROW_MATCH_VECTORS as pi,SEARCH_CORPUS_VECTORS as mi,SEARCH_ROW_SUBTITLE_VECTORS as hi,STRIP_MARKUP_VECTORS as gi,STRIP_MNEMONIC_VECTORS as _i}from"./preferences.js";import{POPOVER_KEY_VECTORS as vi,POPOVER_SURFACE_VECTORS as yi}from"./popover.js";import{SHORTCUT_LABEL_VECTORS as bi,formatShortcutLabelNodes as xi}from"./shortcut-label.js";import{SPINNER_ARC_ENVELOPE as Si,SPINNER_ARC_PHASE_VECTORS as Ci,SPINNER_ARC_TOLERANCE as wi,SPINNER_CONSTANT_VECTORS as Ti}from"./spinner.js";import{LABEL_CHAR_COUNT_VECTORS as Ei,LABEL_DISPLAY_TEXT_VECTORS as Di,LABEL_EFFECTIVE_LINES_VECTORS as Oi,LABEL_ELLIPSIZE_OVERFLOW_VECTORS as ki,LABEL_ELLIPSIZE_VECTORS as Ai,LABEL_JUSTIFY_VECTORS as ji,LABEL_WIDTH_CHARS_EXTENT_VECTORS as Mi,LABEL_WRAP_MODE_VECTORS as Ni,LABEL_XALIGN_VECTORS as Pi,LABEL_YALIGN_ALIGN_ITEMS_VECTORS as Fi,LABEL_YALIGN_VECTORS as Ii}from"./label.js";import{WRAP_BOX_CHILD_ORDER_VECTORS as Li,WRAP_BOX_LENGTH_VECTORS as Ri,WRAP_BOX_LINE_VECTORS as zi,WRAP_BOX_NATURAL_LENGTH_VECTORS as Bi,WRAP_BOX_NOTIFY_PROPERTIES as Vi,WRAP_BOX_POLICY_VECTORS as Hi,WRAP_BOX_SPACING_NOTIFY_VECTORS as Ui,WRAP_BOX_SPACING_VECTORS as Wi}from"./wrap-box.js";import{ATTRIBUTE_OF_VECTORS as Gi,HOST_TAG_VECTORS as Ki,PROPERTY_OF_VECTORS as qi}from"./tags.js";import{VALUE_LIST_VECTORS as Ji}from"./value-lists.js";import{POPUP_MENU_PLAN_VECTORS as Yi,popupMenuOutline as Xi}from"./popup-menu-plan.js";import{MENU_ACTION_VECTORS as Zi,driveMenuActionVectors as Qi,registryMenuActionScene as $i}from"./menu-actions.js";import{MENU_TREE_VECTORS as ea}from"./menu-tree.js";import{RGBA_ROWS as ta,RGBA_VECTORS as na,driveRGBAVectors as ra}from"./rgba.js";import{STYLE_MANAGER_ROWS as ia,STYLE_MANAGER_VECTORS as aa,driveStyleManagerVectors as oa}from"./style-manager.js";import{SIMPLE_ACTION_GROUP_ROWS as sa,SIMPLE_ACTION_GROUP_VECTORS as ca,driveSimpleActionGroupVectors as la}from"./simple-action-group.js";import{WINDOW_ROWS as ua,WINDOW_VECTORS as da,driveWindowVectors as fa}from"./window-members.js";import{WIDGET_MAP_ROWS as pa,WIDGET_MAP_VECTORS as ma,driveWidgetMapVectors as ha}from"./widget-map.js";export{i as ABOUT_DIALOG_CREDITS_LEGAL_VECTORS,a as ABOUT_DIALOG_DETAILS_VECTORS,e as ABOUT_DIALOG_DOOR_VECTORS,o as ABOUT_DIALOG_HEADER_VECTORS,s as ABOUT_DIALOG_LABEL_VECTORS,c as ABOUT_DIALOG_SUPPORT_VECTORS,y as ACCENT_COLOR_VECTORS,l as ACKNOWLEDGEMENT_SECTIONS_VECTORS,x as ACTION_ROW_ACTIVATION_VECTORS,D as ADJUSTMENT_AUTHORED_VECTORS,O as ADJUSTMENT_PARSE_VECTORS,k as ADJUSTMENT_SNAP_VECTORS,Wn as ADW_LENGTH_UNIT_VECTORS,A as APPEARANCE_HANDOFF_VECTORS,j as APPLICATION_ROWS,M as APPLICATION_VECTORS,Gi as ATTRIBUTE_OF_VECTORS,I as AVATAR_COLOR_VECTORS,L as AVATAR_FONT_SIZE_VECTORS,R as AVATAR_ICON_SIZE_VECTORS,z as AVATAR_INITIALS_VECTORS,B as AVATAR_MODE_VECTORS,V as BANNER_BUTTON_STYLE_PARSE_VECTORS,H as BANNER_BUTTON_STYLE_VECTORS,U as BANNER_BUTTON_TEXT_VECTORS,W as BANNER_BUTTON_VISIBLE_VECTORS,G as BANNER_DEFAULT_VECTORS,_t as BOTTOM_SHEET_BOTTOM_BAR_VECTORS,vt as BOTTOM_SHEET_CLOSE_VECTORS,yt as BOTTOM_SHEET_OPEN_VECTORS,bt as BOTTOM_SHEET_PRESENTATION_VECTORS,xt as BOTTOM_SHEET_SWIPE_TRACKER_VECTORS,K as BOX_ALL_VECTORS,Y as BOX_ORIENTATION_VECTORS,q as BOX_ROW_VECTORS,J as BOX_SELECT_VECTORS,X as BOX_SPACING_VECTORS,Z as BREAKPOINT_PICK_VECTORS,Q as BREAKPOINT_TRANSITION_VECTORS,rt as BREAKPOINT_VECTOR_SIZES,$ as BUTTON_CONTENT_DEFAULT_VECTORS,ee as BUTTON_CONTENT_ELLIPSIZE_VECTORS,te as BUTTON_CONTENT_ICON_VECTORS,ne as BUTTON_CONTENT_LABEL_VECTORS,re as BUTTON_CONTENT_STYLE_TARGET_VECTORS,ie as BUTTON_CONTENT_TEXT_VECTORS,S as BUTTON_ROW_ACTIVATABLE_VECTORS,C as BUTTON_ROW_ICON_VECTORS,ae as BUTTON_STYLE_CLASS_VECTORS,oe as CALENDAR_DAYS_VECTORS,se as CALENDAR_MARK_VECTORS,ce as CALENDAR_NAVIGATION_VECTORS,le as CALENDAR_SELECT_VECTORS,ue as CALENDAR_STEP_VECTORS,de as CALENDAR_WEEK_VECTORS,me as CAROUSEL_CLAMP_VECTORS,fe as CAROUSEL_DOOR_VECTORS,he as CAROUSEL_NAVIGATE_VECTORS,ge as CAROUSEL_PAGE_ALLOCATION_VECTORS,_e as CAROUSEL_PAGE_AT_POSITION_VECTORS,ve as CAROUSEL_PAGE_LIST_VECTORS,ye as CAROUSEL_PROPERTY_DEFAULT_VECTORS,be as CAROUSEL_RANGE_VECTORS,xe as CAROUSEL_REORDER_SHIFT_VECTORS,Se as CAROUSEL_REVEAL_VECTORS,Ce as CAROUSEL_SIZES_FROM_SNAP_POINTS_VECTORS,we as CAROUSEL_SNAP_POINT_VECTORS,Te as CAROUSEL_WHEEL_LOCKOUT_VECTORS,Ee as CAROUSEL_WHEEL_VECTORS,ci as CASE_FOLD_VECTORS,De as CHECK_GROUP_VECTORS,Ae as CLAMP_ALLOCATE_VECTORS,je as CLAMP_CHILD_SIZE_VECTORS,Me as CLAMP_PROPERTY_VECTORS,Ne as CLAMP_SIZE_FROM_CHILD_VECTORS,Pe as CLAMP_THRESHOLD_VECTORS,Cr as COLUMN_VIEW_SORT_VECTORS,Dn as COMBO_CHOOSER_VECTORS,On as COMBO_SELECTION_VECTORS,it as CONSTRUCT_KINDS,at as CONSTRUCT_VECTORS,u as CREDITS_SECTIONS_VECTORS,d as CREDIT_PERSON_VECTORS,dt as DATA_GRID_CELL_TEXT_VECTORS,ft as DATA_GRID_COLUMN_CLASS_VECTORS,pt as DATA_GRID_COLUMN_NORMALIZE_VECTORS,mt as DATA_GRID_INTERACTIVE_VECTORS,ht as DATA_GRID_TRACK_VECTORS,gt as DATA_GRID_VARIANT_VECTORS,Ve as ENTRY_MAX_LENGTH_VECTORS,He as ENTRY_ROW_ACTIVATION_VECTORS,Ue as ENTRY_ROW_GUARD_VECTORS,We as ENTRY_ROW_STATE_VECTORS,Ge as ENTRY_TEXT_LENGTH_VECTORS,ot as EXTERN_VECTOR_CLASS,wt as FILE_CHOOSER_ROWS,Tt as FILE_CHOOSER_VECTORS,Ot as GDK_CLIPBOARD_ROWS,kt as GDK_CLIPBOARD_VECTORS,jt as GIO_APP_INFO_ROWS,Mt as GIO_APP_INFO_VECTORS,Pt as GIO_RESOURCE_ROWS,Ft as GIO_RESOURCE_VECTORS,Gn as GLIB_CLAMP_VECTORS,Rt as GLIB_LANGUAGE_ROWS,zt as GLIB_LANGUAGE_TAG_ROWS,Bt as GLIB_LANGUAGE_TAG_VECTORS,Vt as GLIB_LANGUAGE_VECTORS,Wt as GLIB_PATH_ROWS,Gt as GLIB_PATH_VECTORS,qt as GLIB_TIMER_ROWS,Jt as GLIB_TIMER_VECTORS,Xt as GLIB_UNICHAR_ROWS,Zt as GLIB_UNICHAR_VECTORS,$t as GLIB_URI_ROWS,en as GLIB_URI_VECTORS,nn as GLIB_VARIANT_ROWS,rn as GLIB_VARIANT_VECTORS,on as GOBJECT_ROWS,sn as GOBJECT_VECTORS,ln as GRID_NAVIGATION_GEOMETRY,un as GRID_NAVIGATION_VECTORS,wr as GRID_VIEW_COLUMN_VECTORS,dn as GTK_CSS_PIXEL_TOLERANCE,fn as GTK_CSS_ROWS,pn as GTK_CSS_VECTORS,hn as GTK_PLATFORM_ROWS,gn as GTK_PLATFORM_VECTORS,vn as HEADER_BAR_PACK_VECTORS,yn as HEADER_BAR_TITLE_SOURCE_VECTORS,bn as HEADER_BAR_TITLE_WIDGET_VECTORS,Ki as HOST_TAG_VECTORS,xn as ICON_FIXTURE_PATH,Sn as ICON_THEME_RESOURCE_ROWS,Cn as ICON_THEME_RESOURCE_VECTORS,Fr as INLINE_TOGGLE_VECTORS,Ir as INLINE_TOOLTIP_VECTORS,Ei as LABEL_CHAR_COUNT_VECTORS,Di as LABEL_DISPLAY_TEXT_VECTORS,Oi as LABEL_EFFECTIVE_LINES_VECTORS,ki as LABEL_ELLIPSIZE_OVERFLOW_VECTORS,Ai as LABEL_ELLIPSIZE_VECTORS,ji as LABEL_JUSTIFY_VECTORS,w as LABEL_VISIBILITY_VECTORS,Mi as LABEL_WIDTH_CHARS_EXTENT_VECTORS,Ni as LABEL_WRAP_MODE_VECTORS,Pi as LABEL_XALIGN_VECTORS,Fi as LABEL_YALIGN_ALIGN_ITEMS_VECTORS,Ii as LABEL_YALIGN_VECTORS,f as LEGAL_SECTIONS_VECTORS,p as LEGAL_SECTION_VECTORS,m as LICENSE_INFO_VECTORS,h as LICENSE_SETTER_VECTORS,g as LICENSE_SPDX_VECTORS,_ as LICENSE_TEXT_VECTORS,hr as LIST_ITEMS_CHANGED_VECTORS,gr as LIST_MODEL_OWNERSHIP_VECTORS,_r as LIST_NORMALIZE_VECTORS,vr as LIST_PARSE_VECTORS,yr as LIST_SELECTION_CLAMP_VECTORS,Tr as LIST_VIEW_SELECT_VECTORS,li as MAKE_COMPARABLE_VECTORS,Zi as MENU_ACTION_VECTORS,sr as MENU_BUTTON_DIRECTION_VECTORS,Or as MENU_DETAILED_ACTION_VECTORS,kr as MENU_FLATTEN_VECTORS,Ar as MENU_ITEM_STATE_VECTORS,jr as MENU_LABEL_TEXT_VECTORS,Mr as MENU_NORMALIZE_VECTORS,Nr as MENU_PARSE_VECTORS,Pr as MENU_REFUSAL_VECTORS,ea as MENU_TREE_VECTORS,Kn as NATURAL_SIDEBAR_WIDTH_VECTORS,qn as NAVIGATION_ACTION_VECTORS,Jn as NAVIGATION_SPLIT_VIEW_LAYOUT_VECTORS,Yn as NAVIGATION_STACK_VECTORS,Nn as NAVIGATION_VIEW_VECTORS,b as NEAREST_ACCENT_VECTORS,Xn as OVERLAY_COLLAPSE_VECTORS,Zn as OVERLAY_SPLIT_VIEW_LAYOUT_VECTORS,Qn as OVERLAY_SWIPE_AREA_VECTORS,$n as OVERLAY_SWIPE_CANCEL_VECTORS,er as OVERLAY_SWIPE_RELEASE_VECTORS,tr as OVERLAY_SWIPE_SNAP_POINT_VECTORS,nr as OVERLAY_SWIPE_START_VECTORS,Ke as PASSWORD_ENTRY_ROW_VECTORS,qe as PASSWORD_REVEAL_GUARD_VECTORS,vi as POPOVER_KEY_VECTORS,yi as POPOVER_SURFACE_VECTORS,Yi as POPUP_MENU_PLAN_VECTORS,ui as PREFERENCES_GROUP_HEADER_VECTORS,di as PREFERENCES_SEARCH_PAGES,fi as PREFERENCES_SEARCH_VECTORS,qi as PROPERTY_OF_VECTORS,ke as RADIO_GROUP_VECTORS,t as RELEASE_NOTES_VECTORS,ta as RGBA_ROWS,na as RGBA_VECTORS,Tn as ROW_ACCESSOR_VECTORS,pi as ROW_MATCH_VECTORS,mi as SEARCH_CORPUS_VECTORS,hi as SEARCH_ROW_SUBTITLE_VECTORS,Je as SHARED_TREE_BLOCKS_WITHOUT_EXPECTATIONS,Ye as SHARED_TREE_TABLES,bi as SHORTCUT_LABEL_VECTORS,Ln as SIDEBAR_ACTIVATION_VECTORS,rr as SIDEBAR_BOUNDS_VECTORS,Rn as SIDEBAR_CLAMP_VECTORS,zn as SIDEBAR_FILTER_VECTORS,Bn as SIDEBAR_ITEMS_CHANGED_VECTORS,Vn as SIDEBAR_ITEM_FLAG_VECTORS,Hn as SIDEBAR_MODEL_VECTORS,Un as SIDEBAR_MODE_VECTORS,ir as SIDEBAR_WIDTH_VECTORS,sa as SIMPLE_ACTION_GROUP_ROWS,ca as SIMPLE_ACTION_GROUP_VECTORS,Si as SPINNER_ARC_ENVELOPE,Ci as SPINNER_ARC_PHASE_VECTORS,wi as SPINNER_ARC_TOLERANCE,Ti as SPINNER_CONSTANT_VECTORS,Fe as SPINNER_GEOMETRY_VECTORS,Ie as SPINNER_SIZE_VECTORS,cr as SPLIT_BUTTON_CONTENT_VECTORS,lr as SPLIT_BUTTON_DIRECTION_VECTORS,ur as SPLIT_BUTTON_DROPDOWN_VECTORS,dr as SPLIT_BUTTON_MENU_ACTIVATION_VECTORS,fr as SPLIT_BUTTON_ROOT_STATE_VECTORS,pr as SPLIT_BUTTON_STYLE_CLASS_VECTORS,mr as SPLIT_BUTTON_TOOLTIP_VECTORS,ar as SPLIT_VIEW_MEASURE_VECTORS,gi as STRIP_MARKUP_VECTORS,_i as STRIP_MNEMONIC_VECTORS,ia as STYLE_MANAGER_ROWS,aa as STYLE_MANAGER_VECTORS,T as SWITCH_ROW_NOTIFY_VECTORS,Yr as TABS_REVEALED_VECTORS,Xr as TAB_CLOSE_VISIBLE_VECTORS,Zr as TAB_DESCENDANT_VECTORS,Qr as TAB_ICON_STATE_VECTORS,br as TAB_PAGES_ITEMS_CHANGED_VECTORS,$r as TAB_PAGE_DESCRIPTOR_VECTORS,ei as TAB_SEARCH_VECTORS,ti as TAB_SUCCESSOR_VECTORS,ni as TAB_TOOLTIP_VECTORS,ri as TAB_VIEW_VECTORS,or as TAGS_CONFLICT_VECTORS,kn as TOGGLE_ACTIVE_NAME_VECTORS,Le as TOOLBAR_VIEW_ALLOCATE_VECTORS,Re as TOOLBAR_VIEW_CLASS_VECTORS,ze as TOOLBAR_VIEW_CONTENT_FOR_SIZE_VECTORS,Be as TOOLBAR_VIEW_MEASURE_VECTORS,v as TRANSLATOR_CREDITS_VECTORS,Er as TREE_EXPANDER_LAYOUT_VECTORS,Dr as TREE_EXPANDER_SHORTCUT_VECTORS,st as UnsupportedConstructError,Ji as VALUE_LIST_VECTORS,An as VIEW_STACK_ICON_NAME_VECTORS,jn as VIEW_STACK_PAGE_VECTORS,Mn as VIEW_STACK_VECTORS,Lr as VIEW_SWITCHER_BADGE_VECTORS,Rr as VIEW_SWITCHER_BAR_REVEAL_VECTORS,zr as VIEW_SWITCHER_BAR_VECTORS,Br as VIEW_SWITCHER_BUTTON_VECTORS,Vr as VIEW_SWITCHER_BUTTON_VISIBILITY_VECTORS,Hr as VIEW_SWITCHER_DRAG_VECTORS,Ur as VIEW_SWITCHER_ICON_VECTORS,Wr as VIEW_SWITCHER_MNEMONIC_VECTORS,Gr as VIEW_SWITCHER_REBUILD_VECTORS,Kr as VIEW_SWITCHER_SELECTION_VECTORS,qr as VIEW_SWITCHER_SIDEBAR_SECTION_VECTORS,pa as WIDGET_MAP_ROWS,ma as WIDGET_MAP_VECTORS,ua as WINDOW_ROWS,E as WINDOW_TITLE_VECTORS,da as WINDOW_VECTORS,Li as WRAP_BOX_CHILD_ORDER_VECTORS,Ri as WRAP_BOX_LENGTH_VECTORS,zi as WRAP_BOX_LINE_VECTORS,Bi as WRAP_BOX_NATURAL_LENGTH_VECTORS,Vi as WRAP_BOX_NOTIFY_PROPERTIES,Hi as WRAP_BOX_POLICY_VECTORS,Ui as WRAP_BOX_SPACING_NOTIFY_VECTORS,Wi as WRAP_BOX_SPACING_VECTORS,xr as applyListReadback,ii as applyTabViewOp,ct as assertTreeConstructs,Xe as authoredNodes,Ze as authoredTags,Pn as collectNavigationState,lt as constructUsesOf,Jr as createViewSwitcherClock,n as driveAboutDialogDoorVectors,N as driveApplicationVectors,pe as driveCarouselDoorVectors,Oe as driveCheckGroupVectors,ut as driveConstructVectors,Et as driveFileChooserVectors,Ht as driveGLibLanguageTagVectors,Ut as driveGLibLanguageVectors,Kt as driveGLibPathVectors,Yt as driveGLibTimerVectors,Qt as driveGLibUnicharVectors,tn as driveGLibUriVectors,an as driveGLibVariantVectors,cn as driveGObjectVectors,At as driveGdkClipboardVectors,Nt as driveGioAppInfoVectors,It as driveGioResourceVectors,mn as driveGtkCssVectors,_n as driveGtkPlatformVectors,wn as driveIconThemeResourceVectors,Qi as driveMenuActionVectors,ra as driveRGBAVectors,r as driveReleaseNotesVectors,En as driveRowAccessorVectors,la as driveSimpleActionGroupVectors,oa as driveStyleManagerVectors,ha as driveWidgetMapVectors,fa as driveWindowVectors,xi as formatShortcutLabelNodes,Lt as gioResourceFixtures,Fn as navigationEventLog,Xi as popupMenuOutline,Dt as promisifyFileChooser,Qe as reachedTables,$i as registryMenuActionScene,Sr as replayTabPagesAsSplices,St as runBottomSheetBottomBarSteps,Ct as runBottomSheetSteps,In as runNavigationSteps,ai as seedTabViewPages,$e as sharedTreeExpectations,et as sharedTreePlacements,tt as subjectIndexOf,oi as tabViewClosing,si as tabViewOrder,P as unlockedVfuncNames,F as unprovenVfuncs,nt as withoutPlacements};
1
+ import{ABOUT_DIALOG_DOOR_VECTORS as e,RELEASE_NOTES_VECTORS as t,driveAboutDialogDoorVectors as n,driveReleaseNotesVectors as r}from"./about-dialog-doors.js";import{ABOUT_DIALOG_CREDITS_LEGAL_VECTORS as i,ABOUT_DIALOG_DETAILS_VECTORS as a,ABOUT_DIALOG_HEADER_VECTORS as o,ABOUT_DIALOG_LABEL_VECTORS as s,ABOUT_DIALOG_SUPPORT_VECTORS as c,ACKNOWLEDGEMENT_SECTIONS_VECTORS as l,CREDITS_SECTIONS_VECTORS as u,CREDIT_PERSON_VECTORS as d,LEGAL_SECTIONS_VECTORS as f,LEGAL_SECTION_VECTORS as p,LICENSE_INFO_VECTORS as m,LICENSE_SETTER_VECTORS as h,LICENSE_SPDX_VECTORS as g,LICENSE_TEXT_VECTORS as _,TRANSLATOR_CREDITS_VECTORS as v}from"./about-dialog.js";import{ACCENT_COLOR_VECTORS as y,NEAREST_ACCENT_VECTORS as b}from"./accent.js";import{ACTION_ROW_ACTIVATION_VECTORS as x,ACTION_ROW_SUBTITLE_VECTORS as S,BUTTON_ROW_ACTIVATABLE_VECTORS as C,BUTTON_ROW_ICON_VECTORS as w,LABEL_VISIBILITY_VECTORS as T,SWITCH_ROW_NOTIFY_VECTORS as E,WINDOW_TITLE_VECTORS as D}from"./action-row.js";import{ADJUSTMENT_AUTHORED_VECTORS as O,ADJUSTMENT_PARSE_VECTORS as k,ADJUSTMENT_SNAP_VECTORS as A}from"./adjustment.js";import{APPEARANCE_HANDOFF_VECTORS as j}from"./appearance.js";import{APPLICATION_ROWS as M,APPLICATION_VECTORS as N,driveApplicationVectors as P,unlockedVfuncNames as F,unprovenVfuncs as I}from"./application.js";import{AVATAR_COLOR_VECTORS as L,AVATAR_FONT_SIZE_VECTORS as R,AVATAR_ICON_SIZE_VECTORS as z,AVATAR_INITIALS_VECTORS as B,AVATAR_MODE_VECTORS as V}from"./avatar.js";import{BANNER_BUTTON_STYLE_PARSE_VECTORS as H,BANNER_BUTTON_STYLE_VECTORS as U,BANNER_BUTTON_TEXT_VECTORS as W,BANNER_BUTTON_VISIBLE_VECTORS as G,BANNER_DEFAULT_VECTORS as K}from"./banner.js";import{BOX_ALL_VECTORS as q,BOX_ROW_VECTORS as J,BOX_SELECT_VECTORS as Y}from"./box-selection.js";import{BOX_ORIENTATION_VECTORS as X,BOX_SPACING_VECTORS as Z}from"./box.js";import{BREAKPOINT_PICK_VECTORS as Q,BREAKPOINT_TRANSITION_VECTORS as $}from"./breakpoint-bin.js";import{BUTTON_CONTENT_DEFAULT_VECTORS as ee,BUTTON_CONTENT_ELLIPSIZE_VECTORS as te,BUTTON_CONTENT_ICON_VECTORS as ne,BUTTON_CONTENT_LABEL_VECTORS as re,BUTTON_CONTENT_STYLE_TARGET_VECTORS as ie,BUTTON_CONTENT_TEXT_VECTORS as ae}from"./button-content.js";import{BUTTON_STYLE_CLASS_VECTORS as oe}from"./button.js";import{CALENDAR_DAYS_VECTORS as se,CALENDAR_MARK_VECTORS as ce,CALENDAR_NAVIGATION_VECTORS as le,CALENDAR_SELECT_VECTORS as ue,CALENDAR_STEP_VECTORS as de,CALENDAR_WEEK_VECTORS as fe}from"./calendar.js";import{CAROUSEL_DOOR_VECTORS as pe,driveCarouselDoorVectors as me}from"./carousel-doors.js";import{CAROUSEL_CLAMP_VECTORS as he,CAROUSEL_NAVIGATE_VECTORS as ge,CAROUSEL_PAGE_ALLOCATION_VECTORS as _e,CAROUSEL_PAGE_AT_POSITION_VECTORS as ve,CAROUSEL_PAGE_LIST_VECTORS as ye,CAROUSEL_PROPERTY_DEFAULT_VECTORS as be,CAROUSEL_RANGE_VECTORS as xe,CAROUSEL_REORDER_SHIFT_VECTORS as Se,CAROUSEL_REVEAL_VECTORS as Ce,CAROUSEL_SIZES_FROM_SNAP_POINTS_VECTORS as we,CAROUSEL_SNAP_POINT_VECTORS as Te,CAROUSEL_WHEEL_LOCKOUT_VECTORS as Ee,CAROUSEL_WHEEL_VECTORS as De}from"./carousel.js";import{CHECK_GROUP_VECTORS as Oe,driveCheckGroupVectors as ke}from"./check-group.js";import{RADIO_GROUP_VECTORS as Ae}from"./checks.js";import{CLAMP_ALLOCATE_VECTORS as je,CLAMP_CHILD_SIZE_VECTORS as Me,CLAMP_PROPERTY_VECTORS as Ne,CLAMP_SIZE_FROM_CHILD_VECTORS as Pe,CLAMP_THRESHOLD_VECTORS as Fe,SPINNER_GEOMETRY_VECTORS as Ie,SPINNER_SIZE_VECTORS as Le,TOOLBAR_VIEW_ALLOCATE_VECTORS as Re,TOOLBAR_VIEW_CLASS_VECTORS as ze,TOOLBAR_VIEW_CONTENT_FOR_SIZE_VECTORS as Be,TOOLBAR_VIEW_MEASURE_VECTORS as Ve}from"./chrome.js";import{ENTRY_MAX_LENGTH_VECTORS as He,ENTRY_ROW_ACTIVATION_VECTORS as Ue,ENTRY_ROW_GUARD_VECTORS as We,ENTRY_ROW_STATE_VECTORS as Ge,ENTRY_TEXT_LENGTH_VECTORS as Ke,PASSWORD_ENTRY_ROW_VECTORS as qe,PASSWORD_REVEAL_GUARD_VECTORS as Je}from"./entry-row.js";import{SHARED_TREE_BLOCKS_WITHOUT_EXPECTATIONS as Ye,SHARED_TREE_TABLES as Xe,authoredNodes as Ze,authoredTags as Qe,reachedTables as $e,sharedTreeExpectations as et,sharedTreePlacements as tt,subjectIndexOf as nt,withoutPlacements as rt}from"./shared-trees.js";import{BREAKPOINT_VECTOR_SIZES as it,CONSTRUCT_KINDS as at,CONSTRUCT_VECTORS as ot,EXTERN_VECTOR_CLASS as st,UnsupportedConstructError as ct,assertTreeConstructs as lt,constructUsesOf as ut,driveConstructVectors as dt}from"./constructs.js";import{DATA_GRID_CELL_TEXT_VECTORS as ft,DATA_GRID_COLUMN_CLASS_VECTORS as pt,DATA_GRID_COLUMN_NORMALIZE_VECTORS as mt,DATA_GRID_INTERACTIVE_VECTORS as ht,DATA_GRID_TRACK_VECTORS as gt,DATA_GRID_VARIANT_VECTORS as _t}from"./data-grid.js";import{BOTTOM_SHEET_BOTTOM_BAR_VECTORS as vt,BOTTOM_SHEET_CLOSE_VECTORS as yt,BOTTOM_SHEET_OPEN_VECTORS as bt,BOTTOM_SHEET_PRESENTATION_VECTORS as xt,BOTTOM_SHEET_SWIPE_TRACKER_VECTORS as St,runBottomSheetBottomBarSteps as Ct,runBottomSheetSteps as wt}from"./dialog.js";import{EXPANDER_ROW_CONSTRUCT_VECTORS as Tt,EXPANDER_ROW_INITIAL as Et,EXPANDER_ROW_VECTORS as Dt}from"./expander-row.js";import{FILE_CHOOSER_ROWS as Ot,FILE_CHOOSER_VECTORS as kt,driveFileChooserVectors as At,promisifyFileChooser as jt}from"./file-chooser.js";import{GDK_CLIPBOARD_ROWS as Mt,GDK_CLIPBOARD_VECTORS as Nt,driveGdkClipboardVectors as Pt}from"./gdk-clipboard.js";import{GIO_APP_INFO_ROWS as Ft,GIO_APP_INFO_VECTORS as It,driveGioAppInfoVectors as Lt}from"./gio-app-info.js";import{GIO_RESOURCE_ROWS as Rt,GIO_RESOURCE_VECTORS as zt,driveGioResourceVectors as Bt,gioResourceFixtures as Vt}from"./gio-resource.js";import{GLIB_LANGUAGE_ROWS as Ht,GLIB_LANGUAGE_TAG_ROWS as Ut,GLIB_LANGUAGE_TAG_VECTORS as Wt,GLIB_LANGUAGE_VECTORS as Gt,driveGLibLanguageTagVectors as Kt,driveGLibLanguageVectors as qt}from"./glib-language.js";import{GLIB_PATH_ROWS as Jt,GLIB_PATH_VECTORS as Yt,driveGLibPathVectors as Xt}from"./glib-paths.js";import{GLIB_TIMER_ROWS as Zt,GLIB_TIMER_VECTORS as Qt,driveGLibTimerVectors as $t}from"./glib-timers.js";import{GLIB_UNICHAR_ROWS as en,GLIB_UNICHAR_VECTORS as tn,driveGLibUnicharVectors as nn}from"./glib-unichar.js";import{GLIB_URI_ROWS as rn,GLIB_URI_VECTORS as an,driveGLibUriVectors as on}from"./glib-uri.js";import{GLIB_VARIANT_ROWS as sn,GLIB_VARIANT_VECTORS as cn,driveGLibVariantVectors as ln}from"./glib-variant.js";import{GOBJECT_ROWS as un,GOBJECT_VECTORS as dn,driveGObjectVectors as fn}from"./gobject.js";import{GRID_NAVIGATION_GEOMETRY as pn,GRID_NAVIGATION_VECTORS as mn}from"./grid-navigation.js";import{GTK_CSS_PIXEL_TOLERANCE as hn,GTK_CSS_ROWS as gn,GTK_CSS_VECTORS as _n,driveGtkCssVectors as vn}from"./gtk-css.js";import{GTK_PLATFORM_ROWS as yn,GTK_PLATFORM_VECTORS as bn,driveGtkPlatformVectors as xn}from"./gtk-platform.js";import{HEADER_BAR_PACK_VECTORS as Sn,HEADER_BAR_TITLE_SOURCE_VECTORS as Cn,HEADER_BAR_TITLE_WIDGET_VECTORS as wn}from"./header-bar.js";import{ICON_FIXTURE_PATH as Tn,ICON_THEME_RESOURCE_ROWS as En,ICON_THEME_RESOURCE_VECTORS as Dn,driveIconThemeResourceVectors as On}from"./icon-theme-resources.js";import{ROW_ACCESSOR_VECTORS as kn,driveRowAccessorVectors as An}from"./row-accessors.js";import{COMBO_CHOOSER_VECTORS as jn,COMBO_ITEMS_CHANGED_VECTORS as Mn,COMBO_SELECTION_VECTORS as Nn,TOGGLE_ACTIVE_NAME_VECTORS as Pn}from"./rows.js";import{VIEW_STACK_ICON_NAME_VECTORS as Fn,VIEW_STACK_PAGE_VECTORS as In,VIEW_STACK_VECTORS as Ln}from"./view-stack.js";import{NAVIGATION_VIEW_VECTORS as Rn,collectNavigationState as zn,navigationEventLog as Bn,runNavigationSteps as Vn}from"./navigation-view.js";import{SIDEBAR_ACTIVATION_VECTORS as Hn,SIDEBAR_CLAMP_VECTORS as Un,SIDEBAR_FILTER_VECTORS as Wn,SIDEBAR_ITEMS_CHANGED_VECTORS as Gn,SIDEBAR_ITEM_FLAG_VECTORS as Kn,SIDEBAR_MODEL_VECTORS as qn,SIDEBAR_MODE_VECTORS as Jn}from"./sidebar.js";import{ADW_LENGTH_UNIT_VECTORS as Yn,GLIB_CLAMP_VECTORS as Xn,NATURAL_SIDEBAR_WIDTH_VECTORS as Zn,NAVIGATION_ACTION_VECTORS as Qn,NAVIGATION_SPLIT_VIEW_LAYOUT_VECTORS as $n,NAVIGATION_STACK_VECTORS as er,OVERLAY_COLLAPSE_VECTORS as tr,OVERLAY_SPLIT_VIEW_LAYOUT_VECTORS as nr,OVERLAY_SWIPE_AREA_VECTORS as rr,OVERLAY_SWIPE_CANCEL_VECTORS as ir,OVERLAY_SWIPE_RELEASE_VECTORS as ar,OVERLAY_SWIPE_SNAP_POINT_VECTORS as or,OVERLAY_SWIPE_START_VECTORS as sr,SIDEBAR_BOUNDS_VECTORS as cr,SIDEBAR_WIDTH_VECTORS as lr,SPLIT_VIEW_MEASURE_VECTORS as ur,TAGS_CONFLICT_VECTORS as dr}from"./split-view.js";import{MENU_BUTTON_DIRECTION_VECTORS as fr,SPLIT_BUTTON_CONTENT_VECTORS as pr,SPLIT_BUTTON_DIRECTION_VECTORS as mr,SPLIT_BUTTON_DROPDOWN_VECTORS as hr,SPLIT_BUTTON_MENU_ACTIVATION_VECTORS as gr,SPLIT_BUTTON_ROOT_STATE_VECTORS as _r,SPLIT_BUTTON_STYLE_CLASS_VECTORS as vr,SPLIT_BUTTON_TOOLTIP_VECTORS as yr}from"./split-button.js";import{LIST_ITEMS_CHANGED_VECTORS as br,LIST_MODEL_OWNERSHIP_VECTORS as xr,LIST_NORMALIZE_VECTORS as Sr,LIST_PARSE_VECTORS as Cr,TAB_PAGES_ITEMS_CHANGED_VECTORS as wr,applyListMutation as Tr,applyListReadback as Er,listModelForInput as Dr,replayTabPagesAsSplices as Or}from"./list.js";import{COLUMN_VIEW_SORT_VECTORS as kr,GRID_VIEW_COLUMN_VECTORS as Ar,LIST_VIEW_SELECT_VECTORS as jr}from"./list-view.js";import{TREE_EXPANDER_LAYOUT_VECTORS as Mr,TREE_EXPANDER_SHORTCUT_VECTORS as Nr}from"./tree-expander.js";import{MENU_DETAILED_ACTION_VECTORS as Pr,MENU_FLATTEN_VECTORS as Fr,MENU_ITEM_STATE_VECTORS as Ir,MENU_LABEL_TEXT_VECTORS as Lr,MENU_NORMALIZE_VECTORS as Rr,MENU_PARSE_VECTORS as zr,MENU_REFUSAL_VECTORS as Br}from"./menu.js";import{INLINE_TOGGLE_VECTORS as Vr,INLINE_TOOLTIP_VECTORS as Hr,VIEW_SWITCHER_BADGE_VECTORS as Ur,VIEW_SWITCHER_BAR_REVEAL_VECTORS as Wr,VIEW_SWITCHER_BAR_VECTORS as Gr,VIEW_SWITCHER_BUTTON_VECTORS as Kr,VIEW_SWITCHER_BUTTON_VISIBILITY_VECTORS as qr,VIEW_SWITCHER_DRAG_VECTORS as Jr,VIEW_SWITCHER_ICON_VECTORS as Yr,VIEW_SWITCHER_MNEMONIC_VECTORS as Xr,VIEW_SWITCHER_REBUILD_VECTORS as Zr,VIEW_SWITCHER_SELECTION_VECTORS as Qr,VIEW_SWITCHER_SIDEBAR_SECTION_VECTORS as $r,createViewSwitcherClock as ei}from"./view-switcher.js";import{TABS_REVEALED_VECTORS as ti,TAB_CLOSE_VISIBLE_VECTORS as ni,TAB_DESCENDANT_VECTORS as ri,TAB_ICON_STATE_VECTORS as ii,TAB_PAGE_DESCRIPTOR_VECTORS as ai,TAB_SEARCH_VECTORS as oi,TAB_SUCCESSOR_VECTORS as si,TAB_TOOLTIP_VECTORS as ci,TAB_VIEW_VECTORS as li,applyTabViewOp as ui,seedTabViewPages as di,tabViewClosing as fi,tabViewOrder as pi}from"./tab-view.js";import{CASE_FOLD_VECTORS as mi,MAKE_COMPARABLE_VECTORS as hi,PREFERENCES_GROUP_HEADER_VECTORS as gi,PREFERENCES_SEARCH_PAGES as _i,PREFERENCES_SEARCH_VECTORS as vi,ROW_MATCH_VECTORS as yi,SEARCH_CORPUS_VECTORS as bi,SEARCH_ROW_SUBTITLE_VECTORS as xi,STRIP_MARKUP_VECTORS as Si,STRIP_MNEMONIC_VECTORS as Ci}from"./preferences.js";import{POPOVER_KEY_VECTORS as wi,POPOVER_SURFACE_VECTORS as Ti}from"./popover.js";import{SHORTCUT_LABEL_VECTORS as Ei,formatShortcutLabelNodes as Di}from"./shortcut-label.js";import{SPINNER_ARC_ENVELOPE as Oi,SPINNER_ARC_PHASE_VECTORS as ki,SPINNER_ARC_TOLERANCE as Ai,SPINNER_CONSTANT_VECTORS as ji}from"./spinner.js";import{LABEL_CHAR_COUNT_VECTORS as Mi,LABEL_DISPLAY_TEXT_VECTORS as Ni,LABEL_EFFECTIVE_LINES_VECTORS as Pi,LABEL_ELLIPSIZE_OVERFLOW_VECTORS as Fi,LABEL_ELLIPSIZE_VECTORS as Ii,LABEL_JUSTIFY_VECTORS as Li,LABEL_WIDTH_CHARS_EXTENT_VECTORS as Ri,LABEL_WRAP_MODE_VECTORS as zi,LABEL_XALIGN_VECTORS as Bi,LABEL_YALIGN_ALIGN_ITEMS_VECTORS as Vi,LABEL_YALIGN_VECTORS as Hi}from"./label.js";import{LABEL_MARKUP_LINK_VECTORS as Ui,LABEL_MARKUP_RUN_VECTORS as Wi}from"./label-markup.js";import{WRAP_BOX_CHILD_ORDER_VECTORS as Gi,WRAP_BOX_LENGTH_VECTORS as Ki,WRAP_BOX_LINE_VECTORS as qi,WRAP_BOX_NATURAL_LENGTH_VECTORS as Ji,WRAP_BOX_NOTIFY_PROPERTIES as Yi,WRAP_BOX_POLICY_VECTORS as Xi,WRAP_BOX_SPACING_NOTIFY_VECTORS as Zi,WRAP_BOX_SPACING_VECTORS as Qi}from"./wrap-box.js";import{ATTRIBUTE_OF_VECTORS as $i,HOST_TAG_VECTORS as ea,PROPERTY_OF_VECTORS as ta}from"./tags.js";import{VALUE_LIST_VECTORS as na}from"./value-lists.js";import{POPUP_MENU_PLAN_VECTORS as ra,popupMenuOutline as ia}from"./popup-menu-plan.js";import{MENU_ACTION_VECTORS as aa,driveMenuActionVectors as oa,registryMenuActionScene as sa}from"./menu-actions.js";import{MENU_TREE_VECTORS as ca}from"./menu-tree.js";import{RGBA_ROWS as la,RGBA_VECTORS as ua,driveRGBAVectors as da}from"./rgba.js";import{STYLE_MANAGER_ROWS as fa,STYLE_MANAGER_VECTORS as pa,driveStyleManagerVectors as ma}from"./style-manager.js";import{SIMPLE_ACTION_GROUP_ROWS as ha,SIMPLE_ACTION_GROUP_VECTORS as ga,driveSimpleActionGroupVectors as _a}from"./simple-action-group.js";import{WINDOW_ROWS as va,WINDOW_VECTORS as ya,driveWindowVectors as ba}from"./window-members.js";import{WIDGET_MAP_ROWS as xa,WIDGET_MAP_VECTORS as Sa,driveWidgetMapVectors as Ca}from"./widget-map.js";export{i as ABOUT_DIALOG_CREDITS_LEGAL_VECTORS,a as ABOUT_DIALOG_DETAILS_VECTORS,e as ABOUT_DIALOG_DOOR_VECTORS,o as ABOUT_DIALOG_HEADER_VECTORS,s as ABOUT_DIALOG_LABEL_VECTORS,c as ABOUT_DIALOG_SUPPORT_VECTORS,y as ACCENT_COLOR_VECTORS,l as ACKNOWLEDGEMENT_SECTIONS_VECTORS,x as ACTION_ROW_ACTIVATION_VECTORS,S as ACTION_ROW_SUBTITLE_VECTORS,O as ADJUSTMENT_AUTHORED_VECTORS,k as ADJUSTMENT_PARSE_VECTORS,A as ADJUSTMENT_SNAP_VECTORS,Yn as ADW_LENGTH_UNIT_VECTORS,j as APPEARANCE_HANDOFF_VECTORS,M as APPLICATION_ROWS,N as APPLICATION_VECTORS,$i as ATTRIBUTE_OF_VECTORS,L as AVATAR_COLOR_VECTORS,R as AVATAR_FONT_SIZE_VECTORS,z as AVATAR_ICON_SIZE_VECTORS,B as AVATAR_INITIALS_VECTORS,V as AVATAR_MODE_VECTORS,H as BANNER_BUTTON_STYLE_PARSE_VECTORS,U as BANNER_BUTTON_STYLE_VECTORS,W as BANNER_BUTTON_TEXT_VECTORS,G as BANNER_BUTTON_VISIBLE_VECTORS,K as BANNER_DEFAULT_VECTORS,vt as BOTTOM_SHEET_BOTTOM_BAR_VECTORS,yt as BOTTOM_SHEET_CLOSE_VECTORS,bt as BOTTOM_SHEET_OPEN_VECTORS,xt as BOTTOM_SHEET_PRESENTATION_VECTORS,St as BOTTOM_SHEET_SWIPE_TRACKER_VECTORS,q as BOX_ALL_VECTORS,X as BOX_ORIENTATION_VECTORS,J as BOX_ROW_VECTORS,Y as BOX_SELECT_VECTORS,Z as BOX_SPACING_VECTORS,Q as BREAKPOINT_PICK_VECTORS,$ as BREAKPOINT_TRANSITION_VECTORS,it as BREAKPOINT_VECTOR_SIZES,ee as BUTTON_CONTENT_DEFAULT_VECTORS,te as BUTTON_CONTENT_ELLIPSIZE_VECTORS,ne as BUTTON_CONTENT_ICON_VECTORS,re as BUTTON_CONTENT_LABEL_VECTORS,ie as BUTTON_CONTENT_STYLE_TARGET_VECTORS,ae as BUTTON_CONTENT_TEXT_VECTORS,C as BUTTON_ROW_ACTIVATABLE_VECTORS,w as BUTTON_ROW_ICON_VECTORS,oe as BUTTON_STYLE_CLASS_VECTORS,se as CALENDAR_DAYS_VECTORS,ce as CALENDAR_MARK_VECTORS,le as CALENDAR_NAVIGATION_VECTORS,ue as CALENDAR_SELECT_VECTORS,de as CALENDAR_STEP_VECTORS,fe as CALENDAR_WEEK_VECTORS,he as CAROUSEL_CLAMP_VECTORS,pe as CAROUSEL_DOOR_VECTORS,ge as CAROUSEL_NAVIGATE_VECTORS,_e as CAROUSEL_PAGE_ALLOCATION_VECTORS,ve as CAROUSEL_PAGE_AT_POSITION_VECTORS,ye as CAROUSEL_PAGE_LIST_VECTORS,be as CAROUSEL_PROPERTY_DEFAULT_VECTORS,xe as CAROUSEL_RANGE_VECTORS,Se as CAROUSEL_REORDER_SHIFT_VECTORS,Ce as CAROUSEL_REVEAL_VECTORS,we as CAROUSEL_SIZES_FROM_SNAP_POINTS_VECTORS,Te as CAROUSEL_SNAP_POINT_VECTORS,Ee as CAROUSEL_WHEEL_LOCKOUT_VECTORS,De as CAROUSEL_WHEEL_VECTORS,mi as CASE_FOLD_VECTORS,Oe as CHECK_GROUP_VECTORS,je as CLAMP_ALLOCATE_VECTORS,Me as CLAMP_CHILD_SIZE_VECTORS,Ne as CLAMP_PROPERTY_VECTORS,Pe as CLAMP_SIZE_FROM_CHILD_VECTORS,Fe as CLAMP_THRESHOLD_VECTORS,kr as COLUMN_VIEW_SORT_VECTORS,jn as COMBO_CHOOSER_VECTORS,Mn as COMBO_ITEMS_CHANGED_VECTORS,Nn as COMBO_SELECTION_VECTORS,at as CONSTRUCT_KINDS,ot as CONSTRUCT_VECTORS,u as CREDITS_SECTIONS_VECTORS,d as CREDIT_PERSON_VECTORS,ft as DATA_GRID_CELL_TEXT_VECTORS,pt as DATA_GRID_COLUMN_CLASS_VECTORS,mt as DATA_GRID_COLUMN_NORMALIZE_VECTORS,ht as DATA_GRID_INTERACTIVE_VECTORS,gt as DATA_GRID_TRACK_VECTORS,_t as DATA_GRID_VARIANT_VECTORS,He as ENTRY_MAX_LENGTH_VECTORS,Ue as ENTRY_ROW_ACTIVATION_VECTORS,We as ENTRY_ROW_GUARD_VECTORS,Ge as ENTRY_ROW_STATE_VECTORS,Ke as ENTRY_TEXT_LENGTH_VECTORS,Tt as EXPANDER_ROW_CONSTRUCT_VECTORS,Et as EXPANDER_ROW_INITIAL,Dt as EXPANDER_ROW_VECTORS,st as EXTERN_VECTOR_CLASS,Ot as FILE_CHOOSER_ROWS,kt as FILE_CHOOSER_VECTORS,Mt as GDK_CLIPBOARD_ROWS,Nt as GDK_CLIPBOARD_VECTORS,Ft as GIO_APP_INFO_ROWS,It as GIO_APP_INFO_VECTORS,Rt as GIO_RESOURCE_ROWS,zt as GIO_RESOURCE_VECTORS,Xn as GLIB_CLAMP_VECTORS,Ht as GLIB_LANGUAGE_ROWS,Ut as GLIB_LANGUAGE_TAG_ROWS,Wt as GLIB_LANGUAGE_TAG_VECTORS,Gt as GLIB_LANGUAGE_VECTORS,Jt as GLIB_PATH_ROWS,Yt as GLIB_PATH_VECTORS,Zt as GLIB_TIMER_ROWS,Qt as GLIB_TIMER_VECTORS,en as GLIB_UNICHAR_ROWS,tn as GLIB_UNICHAR_VECTORS,rn as GLIB_URI_ROWS,an as GLIB_URI_VECTORS,sn as GLIB_VARIANT_ROWS,cn as GLIB_VARIANT_VECTORS,un as GOBJECT_ROWS,dn as GOBJECT_VECTORS,pn as GRID_NAVIGATION_GEOMETRY,mn as GRID_NAVIGATION_VECTORS,Ar as GRID_VIEW_COLUMN_VECTORS,hn as GTK_CSS_PIXEL_TOLERANCE,gn as GTK_CSS_ROWS,_n as GTK_CSS_VECTORS,yn as GTK_PLATFORM_ROWS,bn as GTK_PLATFORM_VECTORS,Sn as HEADER_BAR_PACK_VECTORS,Cn as HEADER_BAR_TITLE_SOURCE_VECTORS,wn as HEADER_BAR_TITLE_WIDGET_VECTORS,ea as HOST_TAG_VECTORS,Tn as ICON_FIXTURE_PATH,En as ICON_THEME_RESOURCE_ROWS,Dn as ICON_THEME_RESOURCE_VECTORS,Vr as INLINE_TOGGLE_VECTORS,Hr as INLINE_TOOLTIP_VECTORS,Mi as LABEL_CHAR_COUNT_VECTORS,Ni as LABEL_DISPLAY_TEXT_VECTORS,Pi as LABEL_EFFECTIVE_LINES_VECTORS,Fi as LABEL_ELLIPSIZE_OVERFLOW_VECTORS,Ii as LABEL_ELLIPSIZE_VECTORS,Li as LABEL_JUSTIFY_VECTORS,Ui as LABEL_MARKUP_LINK_VECTORS,Wi as LABEL_MARKUP_RUN_VECTORS,T as LABEL_VISIBILITY_VECTORS,Ri as LABEL_WIDTH_CHARS_EXTENT_VECTORS,zi as LABEL_WRAP_MODE_VECTORS,Bi as LABEL_XALIGN_VECTORS,Vi as LABEL_YALIGN_ALIGN_ITEMS_VECTORS,Hi as LABEL_YALIGN_VECTORS,f as LEGAL_SECTIONS_VECTORS,p as LEGAL_SECTION_VECTORS,m as LICENSE_INFO_VECTORS,h as LICENSE_SETTER_VECTORS,g as LICENSE_SPDX_VECTORS,_ as LICENSE_TEXT_VECTORS,br as LIST_ITEMS_CHANGED_VECTORS,xr as LIST_MODEL_OWNERSHIP_VECTORS,Sr as LIST_NORMALIZE_VECTORS,Cr as LIST_PARSE_VECTORS,jr as LIST_VIEW_SELECT_VECTORS,hi as MAKE_COMPARABLE_VECTORS,aa as MENU_ACTION_VECTORS,fr as MENU_BUTTON_DIRECTION_VECTORS,Pr as MENU_DETAILED_ACTION_VECTORS,Fr as MENU_FLATTEN_VECTORS,Ir as MENU_ITEM_STATE_VECTORS,Lr as MENU_LABEL_TEXT_VECTORS,Rr as MENU_NORMALIZE_VECTORS,zr as MENU_PARSE_VECTORS,Br as MENU_REFUSAL_VECTORS,ca as MENU_TREE_VECTORS,Zn as NATURAL_SIDEBAR_WIDTH_VECTORS,Qn as NAVIGATION_ACTION_VECTORS,$n as NAVIGATION_SPLIT_VIEW_LAYOUT_VECTORS,er as NAVIGATION_STACK_VECTORS,Rn as NAVIGATION_VIEW_VECTORS,b as NEAREST_ACCENT_VECTORS,tr as OVERLAY_COLLAPSE_VECTORS,nr as OVERLAY_SPLIT_VIEW_LAYOUT_VECTORS,rr as OVERLAY_SWIPE_AREA_VECTORS,ir as OVERLAY_SWIPE_CANCEL_VECTORS,ar as OVERLAY_SWIPE_RELEASE_VECTORS,or as OVERLAY_SWIPE_SNAP_POINT_VECTORS,sr as OVERLAY_SWIPE_START_VECTORS,qe as PASSWORD_ENTRY_ROW_VECTORS,Je as PASSWORD_REVEAL_GUARD_VECTORS,wi as POPOVER_KEY_VECTORS,Ti as POPOVER_SURFACE_VECTORS,ra as POPUP_MENU_PLAN_VECTORS,gi as PREFERENCES_GROUP_HEADER_VECTORS,_i as PREFERENCES_SEARCH_PAGES,vi as PREFERENCES_SEARCH_VECTORS,ta as PROPERTY_OF_VECTORS,Ae as RADIO_GROUP_VECTORS,t as RELEASE_NOTES_VECTORS,la as RGBA_ROWS,ua as RGBA_VECTORS,kn as ROW_ACCESSOR_VECTORS,yi as ROW_MATCH_VECTORS,bi as SEARCH_CORPUS_VECTORS,xi as SEARCH_ROW_SUBTITLE_VECTORS,Ye as SHARED_TREE_BLOCKS_WITHOUT_EXPECTATIONS,Xe as SHARED_TREE_TABLES,Ei as SHORTCUT_LABEL_VECTORS,Hn as SIDEBAR_ACTIVATION_VECTORS,cr as SIDEBAR_BOUNDS_VECTORS,Un as SIDEBAR_CLAMP_VECTORS,Wn as SIDEBAR_FILTER_VECTORS,Gn as SIDEBAR_ITEMS_CHANGED_VECTORS,Kn as SIDEBAR_ITEM_FLAG_VECTORS,qn as SIDEBAR_MODEL_VECTORS,Jn as SIDEBAR_MODE_VECTORS,lr as SIDEBAR_WIDTH_VECTORS,ha as SIMPLE_ACTION_GROUP_ROWS,ga as SIMPLE_ACTION_GROUP_VECTORS,Oi as SPINNER_ARC_ENVELOPE,ki as SPINNER_ARC_PHASE_VECTORS,Ai as SPINNER_ARC_TOLERANCE,ji as SPINNER_CONSTANT_VECTORS,Ie as SPINNER_GEOMETRY_VECTORS,Le as SPINNER_SIZE_VECTORS,pr as SPLIT_BUTTON_CONTENT_VECTORS,mr as SPLIT_BUTTON_DIRECTION_VECTORS,hr as SPLIT_BUTTON_DROPDOWN_VECTORS,gr as SPLIT_BUTTON_MENU_ACTIVATION_VECTORS,_r as SPLIT_BUTTON_ROOT_STATE_VECTORS,vr as SPLIT_BUTTON_STYLE_CLASS_VECTORS,yr as SPLIT_BUTTON_TOOLTIP_VECTORS,ur as SPLIT_VIEW_MEASURE_VECTORS,Si as STRIP_MARKUP_VECTORS,Ci as STRIP_MNEMONIC_VECTORS,fa as STYLE_MANAGER_ROWS,pa as STYLE_MANAGER_VECTORS,E as SWITCH_ROW_NOTIFY_VECTORS,ti as TABS_REVEALED_VECTORS,ni as TAB_CLOSE_VISIBLE_VECTORS,ri as TAB_DESCENDANT_VECTORS,ii as TAB_ICON_STATE_VECTORS,wr as TAB_PAGES_ITEMS_CHANGED_VECTORS,ai as TAB_PAGE_DESCRIPTOR_VECTORS,oi as TAB_SEARCH_VECTORS,si as TAB_SUCCESSOR_VECTORS,ci as TAB_TOOLTIP_VECTORS,li as TAB_VIEW_VECTORS,dr as TAGS_CONFLICT_VECTORS,Pn as TOGGLE_ACTIVE_NAME_VECTORS,Re as TOOLBAR_VIEW_ALLOCATE_VECTORS,ze as TOOLBAR_VIEW_CLASS_VECTORS,Be as TOOLBAR_VIEW_CONTENT_FOR_SIZE_VECTORS,Ve as TOOLBAR_VIEW_MEASURE_VECTORS,v as TRANSLATOR_CREDITS_VECTORS,Mr as TREE_EXPANDER_LAYOUT_VECTORS,Nr as TREE_EXPANDER_SHORTCUT_VECTORS,ct as UnsupportedConstructError,na as VALUE_LIST_VECTORS,Fn as VIEW_STACK_ICON_NAME_VECTORS,In as VIEW_STACK_PAGE_VECTORS,Ln as VIEW_STACK_VECTORS,Ur as VIEW_SWITCHER_BADGE_VECTORS,Wr as VIEW_SWITCHER_BAR_REVEAL_VECTORS,Gr as VIEW_SWITCHER_BAR_VECTORS,Kr as VIEW_SWITCHER_BUTTON_VECTORS,qr as VIEW_SWITCHER_BUTTON_VISIBILITY_VECTORS,Jr as VIEW_SWITCHER_DRAG_VECTORS,Yr as VIEW_SWITCHER_ICON_VECTORS,Xr as VIEW_SWITCHER_MNEMONIC_VECTORS,Zr as VIEW_SWITCHER_REBUILD_VECTORS,Qr as VIEW_SWITCHER_SELECTION_VECTORS,$r as VIEW_SWITCHER_SIDEBAR_SECTION_VECTORS,xa as WIDGET_MAP_ROWS,Sa as WIDGET_MAP_VECTORS,va as WINDOW_ROWS,D as WINDOW_TITLE_VECTORS,ya as WINDOW_VECTORS,Gi as WRAP_BOX_CHILD_ORDER_VECTORS,Ki as WRAP_BOX_LENGTH_VECTORS,qi as WRAP_BOX_LINE_VECTORS,Ji as WRAP_BOX_NATURAL_LENGTH_VECTORS,Yi as WRAP_BOX_NOTIFY_PROPERTIES,Xi as WRAP_BOX_POLICY_VECTORS,Zi as WRAP_BOX_SPACING_NOTIFY_VECTORS,Qi as WRAP_BOX_SPACING_VECTORS,Tr as applyListMutation,Er as applyListReadback,ui as applyTabViewOp,lt as assertTreeConstructs,Ze as authoredNodes,Qe as authoredTags,zn as collectNavigationState,ut as constructUsesOf,ei as createViewSwitcherClock,n as driveAboutDialogDoorVectors,P as driveApplicationVectors,me as driveCarouselDoorVectors,ke as driveCheckGroupVectors,dt as driveConstructVectors,At as driveFileChooserVectors,Kt as driveGLibLanguageTagVectors,qt as driveGLibLanguageVectors,Xt as driveGLibPathVectors,$t as driveGLibTimerVectors,nn as driveGLibUnicharVectors,on as driveGLibUriVectors,ln as driveGLibVariantVectors,fn as driveGObjectVectors,Pt as driveGdkClipboardVectors,Lt as driveGioAppInfoVectors,Bt as driveGioResourceVectors,vn as driveGtkCssVectors,xn as driveGtkPlatformVectors,On as driveIconThemeResourceVectors,oa as driveMenuActionVectors,da as driveRGBAVectors,r as driveReleaseNotesVectors,An as driveRowAccessorVectors,_a as driveSimpleActionGroupVectors,ma as driveStyleManagerVectors,Ca as driveWidgetMapVectors,ba as driveWindowVectors,Di as formatShortcutLabelNodes,Vt as gioResourceFixtures,Dr as listModelForInput,Bn as navigationEventLog,ia as popupMenuOutline,jt as promisifyFileChooser,$e as reachedTables,sa as registryMenuActionScene,Or as replayTabPagesAsSplices,Ct as runBottomSheetBottomBarSteps,wt as runBottomSheetSteps,Vn as runNavigationSteps,di as seedTabViewPages,et as sharedTreeExpectations,tt as sharedTreePlacements,nt as subjectIndexOf,fi as tabViewClosing,pi as tabViewOrder,F as unlockedVfuncNames,I as unprovenVfuncs,rt as withoutPlacements};
@@ -0,0 +1 @@
1
+ const e=[{markup:`plain`,text:`plain`,runs:[{text:`plain`}],rule:`text with no tag at all is one unstyled run`},{markup:`<b>Bold</b> and <i>italic</i>`,text:`Bold and italic`,runs:[{text:`Bold`,bold:!0},{text:` and `},{text:`italic`,italic:!0}],rule:`each element is a run, and the text between them is a run of its own`},{markup:`<b>a</b><b>b</b>`,text:`ab`,runs:[{text:`ab`,bold:!0}],rule:`adjacent runs of equal style MERGE — pango attributes ranges, not elements`},{markup:`<b>bold <i>both</i></b>`,text:`bold both`,runs:[{text:`bold `,bold:!0},{text:`both`,bold:!0,italic:!0}],rule:`nesting accumulates: the inner run carries both tags`},{markup:`x<sub>2</sub> and y<sup>3</sup>`,text:`x2 and y3`,runs:[{text:`x`},{text:`2`,script:`sub`},{text:` and y`},{text:`3`,script:`sup`}],rule:`sub and sup are the vertical position of a run, the pair GTK writes formulae with`},{markup:`<sub><sup>inner</sup></sub>`,text:`inner`,runs:[{text:`inner`,script:`sup`}],rule:`a run cannot be both: the INNERMOST of sub/sup wins, as pango resolves it`},{markup:`<tt>code</tt> in prose`,text:`code in prose`,runs:[{text:`code`,monospace:!0},{text:` in prose`}],rule:`tt is the monospace run — the tag the measured tutorial corpus uses 350 times`},{markup:`<u>under</u><s>struck</s>`,text:`understruck`,runs:[{text:`under`,underline:!0},{text:`struck`,strikethrough:!0}],rule:`u and s are separate runs: equal text, different attributes, so no merge`},{markup:`<big><big>huge</big></big>`,text:`huge`,runs:[{text:`huge`,sizeSteps:2}],rule:`big COMPOSES: pango applies one scale factor per element, so two is two steps`},{markup:`<big><small>back</small></big>`,text:`back`,runs:[{text:`back`}],rule:`small inside big cancels to the base size, which innermost-wins would get wrong`},{markup:`<span foreground="red">Hot</span>`,text:`Hot`,runs:[{text:`Hot`,spans:[{foreground:`red`}]}],rule:`a span carries its attributes to the renderer, which owns the platform mapping`},{markup:`<span weight="bold"><span foreground="red">both</span></span>`,text:`both`,runs:[{text:`both`,spans:[{weight:`bold`},{foreground:`red`}]}],rule:`nested spans are a STACK, outermost first, so the innermost wins per property`},{markup:`Tea &amp; cake`,text:`Tea & cake`,runs:[{text:`Tea & cake`}],rule:"an entity is resolved into the run, so `&amp;` is one character to draw"},{markup:`<markup><b>rooted</b></markup>`,text:`rooted`,runs:[{text:`rooted`,bold:!0}],rule:`markup is pango's implicit root and styles nothing`},{markup:`Read the <a href="https://gtk.org">docs</a> first`,text:`Read the docs first`,runs:[{text:`Read the `},{text:`docs`,link:0},{text:` first`}],rule:`a link is a run like any other, pointing at the row's link by index`},{markup:`<a href="https://gtk.org"><b>bold link</b></a>`,text:`bold link`,runs:[{text:`bold link`,bold:!0,link:0}],rule:`a link and a tag compose — the run is inside both`},{markup:`<b>unclosed`,text:`<b>unclosed`,runs:[],rule:`unparseable markup has NO runs: the caller shows the raw string, the C fallback`}],t=[{markup:`no links here`,links:[],cssClass:!1,hasTooltip:!1,rule:"markup without an `<a>` has no links, and the label stays unstyled"},{markup:`Read the <a href="https://gtk.org">docs</a> first`,links:[{href:`https://gtk.org`,title:null,cssClass:null,start:9,end:13}],cssClass:!0,hasTooltip:!1,rule:"the offsets are into the DISPLAY text, so `Read the ` is nine units"},{markup:`<a href="https://gtk.org" title="The GTK docs">docs</a>`,links:[{href:`https://gtk.org`,title:`The GTK docs`,cssClass:null,start:0,end:4}],cssClass:!0,hasTooltip:!0,rule:`a title is the label's tooltip over that link, so the widget opts in`},{markup:`<a href="https://gtk.org" class="accent">docs</a>`,links:[{href:`https://gtk.org`,title:null,cssClass:`accent`,start:0,end:4}],cssClass:!0,hasTooltip:!1,rule:`class goes on the link's own node, and is not a tooltip`},{markup:`<a href="a">one</a> and <a href="b">two</a>`,links:[{href:`a`,title:null,cssClass:null,start:0,end:3},{href:`b`,title:null,cssClass:null,start:8,end:11}],cssClass:!0,hasTooltip:!1,rule:`two links are two entries in reading order, each over its own range`},{markup:`<a href="a">one</a><a href="b" title="t">two</a>`,links:[{href:`a`,title:null,cssClass:null,start:0,end:3},{href:`b`,title:`t`,cssClass:null,start:3,end:6}],cssClass:!0,hasTooltip:!0,rule:`ONE link with a title is enough for has-tooltip — the tooltip is per-link`},{markup:`Tee &amp; <a href="https://gtk.org">Kuchen</a>`,links:[{href:`https://gtk.org`,title:null,cssClass:null,start:6,end:12}],cssClass:!0,hasTooltip:!1,rule:"the offset counts the RESOLVED entity as one unit, not `&amp;` as five"},{markup:`Über <a href="https://gtk.org">uns</a>`,links:[{href:`https://gtk.org`,title:null,cssClass:null,start:5,end:8}],cssClass:!0,hasTooltip:!1,rule:"UTF-16 code units, not bytes: `Über ` is five units where GTK counts six"},{markup:`<a href="https://gtk.org"><b>bold</b> link</a>`,links:[{href:`https://gtk.org`,title:null,cssClass:null,start:0,end:9}],cssClass:!0,hasTooltip:!1,rule:`a link's range covers all its text, however many runs the tags inside make`},{markup:`<a href="https://gtk.org"></a>`,links:[{href:`https://gtk.org`,title:null,cssClass:null,start:0,end:0}],cssClass:!0,hasTooltip:!1,rule:`an empty link is a link with nothing to click — recorded, not dropped`},{markup:`<a href="outer">out <a href="inner">in</a></a>`,links:[{href:`outer`,title:null,cssClass:null,start:0,end:6},{href:`inner`,title:null,cssClass:null,start:4,end:6}],cssClass:!0,hasTooltip:!1,rule:"GMarkup has no content model, so nested `<a>` parses and the INNER one owns its text"},{markup:`<a>no href</a>`,links:null,cssClass:!1,hasTooltip:!1,rule:`href is required (G_MARKUP_ERROR_INVALID_CONTENT), so the whole string is raw text`},{markup:`<a href="x" target="_blank">docs</a>`,links:null,cssClass:!1,hasTooltip:!1,rule:`a fourth attribute is UNKNOWN_ATTRIBUTE: the parse fails, the attribute is not ignored`},{markup:`<a href="x">unclosed`,links:null,cssClass:!1,hasTooltip:!1,rule:`an unclosed link is unparseable markup like any other`}];export{t as LABEL_MARKUP_LINK_VECTORS,e as LABEL_MARKUP_RUN_VECTORS};
@@ -1 +1 @@
1
- const e=[{label:`a < b`,useMarkup:!1,useUnderline:!1,text:`a < b`,rule:"use-markup defaults to FALSE, so a `<` in prose is shown literally"},{label:`<b>Bold</b>`,useMarkup:!1,useUnderline:!1,text:`<b>Bold</b>`,rule:`markup without use-markup is text, tags included`},{label:`<b>Bold</b> &amp; plain`,useMarkup:!0,useUnderline:!1,text:`Bold & plain`,rule:`use-markup shows the markup as its text — the declared divergence: GTK also draws it bold`},{label:`a < b`,useMarkup:!0,useUnderline:!1,text:`a < b`,rule:`unparseable markup keeps the raw string, the C fallback`},{label:`<img src="x" onerror="alert(1)">`,useMarkup:!0,useUnderline:!1,text:`<img src="x" onerror="alert(1)">`,rule:`a tag Pango does not know is unparseable markup, so it is shown, never built`},{label:`_Open`,useMarkup:!1,useUnderline:!1,text:`_Open`,rule:`an underscore is literal unless use-underline is set`},{label:`_Open`,useMarkup:!1,useUnderline:!0,text:`Open`,rule:`use-underline removes the mnemonic marker from the shown text`},{label:`<span font_desc="Sans 12">Big</span>`,useMarkup:!0,useUnderline:!0,text:`Big`,rule:`markup is reduced BEFORE the mnemonic, so an underscore inside a tag is not one`}],t=[{value:null,xalign:.5,rule:`an absent xalign centres the text, the pspec default`},{value:0,xalign:0,rule:`0 is the start edge`},{value:`0.25`,xalign:.25,rule:`the string an attribute carries parses`},{value:-1,xalign:0,rule:`below the range clamps to 0, as the setter does`},{value:`3`,xalign:1,rule:`above the range clamps to 1`},{value:`left`,xalign:.5,rule:`an unparseable value is the default, not NaN`}],n=[{value:null,justify:`left`,rule:`an absent justify is the default, left`},{value:`center`,justify:`center`,rule:`a nick is read as written`},{value:`fill`,justify:`fill`,rule:`fill is the fourth nick`},{value:`justify`,justify:`left`,rule:`a CSS keyword is no nick, so the default stays`}],r=[{value:null,yalign:.5,rule:`an absent yalign centres the text, the pspec default`},{value:0,yalign:0,rule:`0 is the top edge`},{value:`0.25`,yalign:.25,rule:`the string an attribute carries parses`},{value:-1,yalign:0,rule:`below the range clamps to 0, as the setter does`},{value:`3`,yalign:1,rule:`above the range clamps to 1`},{value:`top`,yalign:.5,rule:`an unparseable value is the default, not NaN`}],i=[{yalign:0,alignItems:`flex-start`,rule:`0 is the top edge exactly`},{yalign:.2,alignItems:`flex-start`,rule:`0.2 is nearer 0 than 0.5`},{yalign:.25,alignItems:`center`,rule:`the 0/0.5 boundary is equidistant: ties go to the centre zone`},{yalign:.3,alignItems:`center`,rule:`0.3 is nearer 0.5 than 0 — a strict half-split gets this wrong`},{yalign:.5,alignItems:`center`,rule:`0.5 is the centre exactly, the pspec default`},{yalign:.7,alignItems:`center`,rule:`0.7 is nearer 0.5 than 1 — a strict half-split gets this wrong`},{yalign:.75,alignItems:`center`,rule:`the 0.5/1 boundary is equidistant: ties go to the centre zone`},{yalign:.8,alignItems:`flex-end`,rule:`0.8 is nearer 1 than 0.5`},{yalign:1,alignItems:`flex-end`,rule:`1 is the bottom edge exactly`}],a=[{value:null,ellipsize:`none`,rule:`an absent ellipsize is the default, none`},{value:`start`,ellipsize:`start`,rule:`a nick is read as written`},{value:`middle`,ellipsize:`middle`,rule:`middle is the third nick`},{value:`end`,ellipsize:`end`,rule:`end is the fourth nick`},{value:`both`,ellipsize:`none`,rule:`an unknown nick leaves the default, none`}],o=[{ellipsize:`none`,overflow:`clip`,rule:`no ellipsization draws no ellipsis`},{ellipsize:`end`,overflow:`ellipsis`,rule:`end is the one mode CSS/NativeScript name exactly`},{ellipsize:`start`,overflow:`ellipsis`,rule:`declared divergence: no platform truncates from the start, so this draws an end-ellipsis rather than clipping silently`},{ellipsize:`middle`,overflow:`ellipsis`,rule:`declared divergence: no platform truncates from the middle, so this draws an end-ellipsis rather than clipping silently`}],s=[{value:null,wrapMode:`word`,rule:`an absent wrap-mode is the default, word`},{value:`char`,wrapMode:`char`,rule:`a nick is read as written`},{value:`word-char`,wrapMode:`word-char`,rule:`word-char is the third nick`},{value:`wordchar`,wrapMode:`word`,rule:`a nick with the dash dropped is unknown, so the default stays`}],c=[{value:null,count:-1,rule:`an absent value is the default, -1 ("auto"/unlimited)`},{value:0,count:0,rule:`0 is a real, held value — an empty label, not "unset"`},{value:`12`,count:12,rule:`the string an attribute carries parses`},{value:`3.7`,count:3,rule:`a fractional string truncates, as an int property would`},{value:-5,count:-1,rule:`below the floor clamps to -1, as the property system does`},{value:`auto`,count:-1,rule:`an unparseable value is the default, not NaN`}],l=[{lines:-1,ellipsize:`none`,effective:null,rule:`not ellipsized: no effect, however lines is set`},{lines:2,ellipsize:`none`,effective:null,rule:`not ellipsized: lines has no effect even at a real value`},{lines:-1,ellipsize:`end`,effective:1,rule:`ellipsized, lines unset: Pango's own default is ONE line`},{lines:0,ellipsize:`end`,effective:1,rule:`0 is not a real limit either: GTK only calls pango_layout_set_height for lines > 0, so 0 falls to the same Pango default as unset`},{lines:1,ellipsize:`end`,effective:1,rule:`lines=1 explicitly is the same one line`},{lines:2,ellipsize:`end`,effective:2,rule:`ellipsized alone is enough — no wrap needed, the finding this table exists to pin`},{lines:3,ellipsize:`start`,effective:3,rule:`holds for every ellipsize mode, not only end`}],u=[{widthChars:-1,maxWidthChars:-1,minCh:null,maxCh:null,rule:`both unset: no extent either way`},{widthChars:10,maxWidthChars:-1,minCh:10,maxCh:null,rule:`width-chars alone sets a minimum only`},{widthChars:-1,maxWidthChars:20,minCh:null,maxCh:20,rule:`max-width-chars alone sets a natural width`},{widthChars:10,maxWidthChars:20,minCh:10,maxCh:20,rule:`both set: minimum and the wider natural`},{widthChars:15,maxWidthChars:5,minCh:15,maxCh:15,rule:`max-width-chars narrower than width-chars: natural is still the MAX of the two, per the C`}];export{c as LABEL_CHAR_COUNT_VECTORS,e as LABEL_DISPLAY_TEXT_VECTORS,l as LABEL_EFFECTIVE_LINES_VECTORS,o as LABEL_ELLIPSIZE_OVERFLOW_VECTORS,a as LABEL_ELLIPSIZE_VECTORS,n as LABEL_JUSTIFY_VECTORS,u as LABEL_WIDTH_CHARS_EXTENT_VECTORS,s as LABEL_WRAP_MODE_VECTORS,t as LABEL_XALIGN_VECTORS,i as LABEL_YALIGN_ALIGN_ITEMS_VECTORS,r as LABEL_YALIGN_VECTORS};
1
+ const e=[{label:`a < b`,useMarkup:!1,useUnderline:!1,text:`a < b`,rule:"use-markup defaults to FALSE, so a `<` in prose is shown literally"},{label:`<b>Bold</b>`,useMarkup:!1,useUnderline:!1,text:`<b>Bold</b>`,rule:`markup without use-markup is text, tags included`},{label:`<b>Bold</b> &amp; plain`,useMarkup:!0,useUnderline:!1,text:`Bold & plain`,rule:`get_text() is the markup with its tags gone and its entities resolved`},{label:`a < b`,useMarkup:!0,useUnderline:!1,text:`a < b`,rule:`unparseable markup keeps the raw string, the C fallback`},{label:`<img src="x" onerror="alert(1)">`,useMarkup:!0,useUnderline:!1,text:`<img src="x" onerror="alert(1)">`,rule:`a tag Pango does not know is unparseable markup, so it is shown, never built`},{label:`_Open`,useMarkup:!1,useUnderline:!1,text:`_Open`,rule:`an underscore is literal unless use-underline is set`},{label:`_Open`,useMarkup:!1,useUnderline:!0,text:`Open`,rule:`use-underline removes the mnemonic marker from the shown text`},{label:`<span font_desc="Sans 12">Big</span>`,useMarkup:!0,useUnderline:!0,text:`Big`,rule:`markup is reduced BEFORE the mnemonic, so an underscore inside a tag is not one`},{label:`Read the <a href="https://gtk.org">docs</a>`,useMarkup:!0,useUnderline:!1,text:`Read the docs`,rule:"`<a href>` is Gtk.Label's own tag, and get_text() is the text without it"}],t=[{value:null,xalign:.5,rule:`an absent xalign centres the text, the pspec default`},{value:0,xalign:0,rule:`0 is the start edge`},{value:`0.25`,xalign:.25,rule:`the string an attribute carries parses`},{value:-1,xalign:0,rule:`below the range clamps to 0, as the setter does`},{value:`3`,xalign:1,rule:`above the range clamps to 1`},{value:`left`,xalign:.5,rule:`an unparseable value is the default, not NaN`}],n=[{value:null,justify:`left`,rule:`an absent justify is the default, left`},{value:`center`,justify:`center`,rule:`a nick is read as written`},{value:`fill`,justify:`fill`,rule:`fill is the fourth nick`},{value:`justify`,justify:`left`,rule:`a CSS keyword is no nick, so the default stays`}],r=[{value:null,yalign:.5,rule:`an absent yalign centres the text, the pspec default`},{value:0,yalign:0,rule:`0 is the top edge`},{value:`0.25`,yalign:.25,rule:`the string an attribute carries parses`},{value:-1,yalign:0,rule:`below the range clamps to 0, as the setter does`},{value:`3`,yalign:1,rule:`above the range clamps to 1`},{value:`top`,yalign:.5,rule:`an unparseable value is the default, not NaN`}],i=[{yalign:0,alignItems:`flex-start`,rule:`0 is the top edge exactly`},{yalign:.2,alignItems:`flex-start`,rule:`0.2 is nearer 0 than 0.5`},{yalign:.25,alignItems:`center`,rule:`the 0/0.5 boundary is equidistant: ties go to the centre zone`},{yalign:.3,alignItems:`center`,rule:`0.3 is nearer 0.5 than 0 — a strict half-split gets this wrong`},{yalign:.5,alignItems:`center`,rule:`0.5 is the centre exactly, the pspec default`},{yalign:.7,alignItems:`center`,rule:`0.7 is nearer 0.5 than 1 — a strict half-split gets this wrong`},{yalign:.75,alignItems:`center`,rule:`the 0.5/1 boundary is equidistant: ties go to the centre zone`},{yalign:.8,alignItems:`flex-end`,rule:`0.8 is nearer 1 than 0.5`},{yalign:1,alignItems:`flex-end`,rule:`1 is the bottom edge exactly`}],a=[{value:null,ellipsize:`none`,rule:`an absent ellipsize is the default, none`},{value:`start`,ellipsize:`start`,rule:`a nick is read as written`},{value:`middle`,ellipsize:`middle`,rule:`middle is the third nick`},{value:`end`,ellipsize:`end`,rule:`end is the fourth nick`},{value:`both`,ellipsize:`none`,rule:`an unknown nick leaves the default, none`}],o=[{ellipsize:`none`,overflow:`clip`,rule:`no ellipsization draws no ellipsis`},{ellipsize:`end`,overflow:`ellipsis`,rule:`end is the one mode CSS/NativeScript name exactly`},{ellipsize:`start`,overflow:`ellipsis`,rule:`declared divergence: no platform truncates from the start, so this draws an end-ellipsis rather than clipping silently`},{ellipsize:`middle`,overflow:`ellipsis`,rule:`declared divergence: no platform truncates from the middle, so this draws an end-ellipsis rather than clipping silently`}],s=[{value:null,wrapMode:`word`,rule:`an absent wrap-mode is the default, word`},{value:`char`,wrapMode:`char`,rule:`a nick is read as written`},{value:`word-char`,wrapMode:`word-char`,rule:`word-char is the third nick`},{value:`wordchar`,wrapMode:`word`,rule:`a nick with the dash dropped is unknown, so the default stays`}],c=[{value:null,count:-1,rule:`an absent value is the default, -1 ("auto"/unlimited)`},{value:0,count:0,rule:`0 is a real, held value — an empty label, not "unset"`},{value:`12`,count:12,rule:`the string an attribute carries parses`},{value:`3.7`,count:3,rule:`a fractional string truncates, as an int property would`},{value:-5,count:-1,rule:`below the floor clamps to -1, as the property system does`},{value:`auto`,count:-1,rule:`an unparseable value is the default, not NaN`}],l=[{lines:-1,ellipsize:`none`,effective:null,rule:`not ellipsized: no effect, however lines is set`},{lines:2,ellipsize:`none`,effective:null,rule:`not ellipsized: lines has no effect even at a real value`},{lines:-1,ellipsize:`end`,effective:1,rule:`ellipsized, lines unset: Pango's own default is ONE line`},{lines:0,ellipsize:`end`,effective:1,rule:`0 is not a real limit either: GTK only calls pango_layout_set_height for lines > 0, so 0 falls to the same Pango default as unset`},{lines:1,ellipsize:`end`,effective:1,rule:`lines=1 explicitly is the same one line`},{lines:2,ellipsize:`end`,effective:2,rule:`ellipsized alone is enough — no wrap needed, the finding this table exists to pin`},{lines:3,ellipsize:`start`,effective:3,rule:`holds for every ellipsize mode, not only end`}],u=[{widthChars:-1,maxWidthChars:-1,minCh:null,maxCh:null,rule:`both unset: no extent either way`},{widthChars:10,maxWidthChars:-1,minCh:10,maxCh:null,rule:`width-chars alone sets a minimum only`},{widthChars:-1,maxWidthChars:20,minCh:null,maxCh:20,rule:`max-width-chars alone sets a natural width`},{widthChars:10,maxWidthChars:20,minCh:10,maxCh:20,rule:`both set: minimum and the wider natural`},{widthChars:15,maxWidthChars:5,minCh:15,maxCh:15,rule:`max-width-chars narrower than width-chars: natural is still the MAX of the two, per the C`}];export{c as LABEL_CHAR_COUNT_VECTORS,e as LABEL_DISPLAY_TEXT_VECTORS,l as LABEL_EFFECTIVE_LINES_VECTORS,o as LABEL_ELLIPSIZE_OVERFLOW_VECTORS,a as LABEL_ELLIPSIZE_VECTORS,n as LABEL_JUSTIFY_VECTORS,u as LABEL_WIDTH_CHARS_EXTENT_VECTORS,s as LABEL_WRAP_MODE_VECTORS,t as LABEL_XALIGN_VECTORS,i as LABEL_YALIGN_ALIGN_ITEMS_VECTORS,r as LABEL_YALIGN_VECTORS};
@@ -1 +1 @@
1
- import"../_virtual/_rolldown/runtime.js";import{tabViewItemsChanged as e}from"../tab-view.js";function stringItem(e){return{string:e}}function listSource(...e){return{get_n_items:()=>e.length,get_item:t=>e[t]??null}}const t=[{input:[`Cyan`,`Magenta`],model:[{value:`Cyan`,label:`Cyan`},{value:`Magenta`,label:`Magenta`}],rule:"a bare string is both value and label — `Gtk.StringList`, which is what a combo row is fed in the common case"},{input:[{value:`a`,label:`One`}],model:[{value:`a`,label:`One`}],rule:`a full descriptor passes through unchanged`},{input:[{label:`Apple`}],model:[{value:`Apple`,label:`Apple`}],rule:"a label with no value is addressable BY that label — otherwise the item answers to `undefined` and `selectedValue` can never reach it"},{input:[{value:`k`}],model:[{value:`k`,label:`k`}],rule:`a value with no label draws its value, so an item is never blank by omission`},{input:[{value:7,label:42}],model:[{value:`7`,label:`42`}],rule:`both halves are stringified: the model is a string list on GTK, and a number that stayed a number would fail an === against the attribute it round-trips through`},{input:[{value:``,label:`blank`}],model:[{value:``,label:`blank`}],rule:`an EMPTY value is a value — it is not missing, so the label does not stand in for it`},{input:[],model:[],rule:`the empty model normalises to the empty model, which is the state a placeholder is drawn from`},{input:listSource(stringItem(`Cyan`),stringItem(`Magenta`)),model:[{value:`Cyan`,label:`Cyan`},{value:`Magenta`,label:`Magenta`}],rule:"a model of `Gtk.StringObject`s reads as its strings — the same model an array of those strings makes"},{input:listSource(),model:[],rule:`an EMPTY model is the empty model, not a model the normaliser declines to read`},{input:listSource({value:`a`,label:`One`}),model:[{value:`a`,label:`One`}],rule:`an item that is no string object meets the descriptor rule, the one an array entry meets`},{input:listSource({}),model:[{value:``,label:``}],rule:"an item with neither half is the empty descriptor `{}` already is — drawing it would need `expression`, which ADR 0122 leaves out"}],n=[{attribute:`["a","b"]`,model:[{value:`a`,label:`a`},{value:`b`,label:`b`}],rule:`the string-array form, which is what markup writes in the common case`},{attribute:`[{"value":"a","label":"A"}]`,model:[{value:`a`,label:`A`}],rule:`the descriptor form`},{attribute:`[not json`,model:[],rule:`unparseable JSON is an author slip and yields the empty model — it must not stop the element upgrading`},{attribute:`{"a":1}`,model:[],rule:"well-formed JSON that is not an ARRAY is the second, different slip, and it answers the same way rather than throwing on `.map`"},{attribute:``,model:[],rule:`an empty attribute is an empty model, not a parse attempt`}],r={value:`a`,label:`A`},i={value:`b`,label:`B`},a={value:`c`,label:`C`},o=[r,i,a],s=[{previous:[],next:o,change:{position:0,removed:0,added:3},survivors:0,rule:`the first assignment adds everything at 0 — there is nothing to carry over`},{previous:o,next:[...o,{value:`d`,label:`D`}],change:{position:3,removed:0,added:1},survivors:3,rule:`an APPEND touches one position: three views stand, and this is the row a rebuild fails while the model still reads correct`},{previous:o,next:[{value:`z`,label:`Z`},...o],change:{position:0,removed:0,added:1},survivors:3,rule:`a PREPEND is one insertion at 0, not a shift of everything after it — positions move, nodes do not`},{previous:o,next:[r,a],change:{position:1,removed:1,added:0},survivors:2,rule:`a removal from the middle: the shared suffix is what keeps it one item wide`},{previous:o,next:[r,{value:`b`,label:`Renamed`},a],change:{position:1,removed:1,added:1},survivors:2,rule:"a RELABELLED item at an unchanged value is inside the range — comparing by value alone would leave the old text on screen, which is what `selection_item_changed` exists for upstream"},{previous:o,next:o,change:null,survivors:3,rule:`an equal model emits NOTHING, as GTK does — a renderer that rebuilt here would discard three live views for no change at all`},{previous:o,next:[{value:`a`,label:`A`},{value:`b`,label:`B`},{value:`c`,label:`C`}],change:null,survivors:3,rule:`equality is STRUCTURAL, not by array identity: a caller that rebuilds its array every render must not force a rebuild here`},{previous:o,next:[],change:{position:0,removed:3,added:0},survivors:0,rule:`emptying the model removes everything from 0`},{previous:o,next:[a,i,r],change:{position:0,removed:3,added:3},survivors:0,rule:"a REVERSAL is the whole span: `items-changed` has no vocabulary for a move, and neither does `g_list_store_move`, which reports one the same way"}],c=[{initial:[r,i],source:`readback`,op:`append`,assign:!1,model:[r,i],itemsChanged:null,survivors:2,rule:`a model read back is the CALLER's array — pushing onto it moves nothing, because nothing was assigned`},{initial:[r,i],source:`readback`,op:`append`,assign:!0,model:[r,i,{value:`z`,label:`Z`}],itemsChanged:{position:2,removed:0,added:1},survivors:2,rule:`read, push, assign is one insertion at the end — the pattern a full rebuild used to serve and a splice over a shared array answers with nothing at all`},{initial:[r,i],source:`readback`,op:`relabel-first`,assign:!0,model:[{value:`a`,label:`Renamed`},i],itemsChanged:{position:0,removed:1,added:1},survivors:1,rule:`relabelling an item THROUGH the array read back is the same failure one level down: a shared descriptor changes the stored model too, so the comparison sees no change`},{initial:[r,i,a],source:`readback`,op:`remove-first`,assign:!0,model:[i,a],itemsChanged:{position:0,removed:1,added:0},survivors:2,rule:`the shrink direction, which a shared array reports as a model that got shorter on BOTH sides and therefore did not change`},{initial:[r,i],source:`input`,op:`append`,assign:!0,model:[r,i,{value:`z`,label:`Z`}],itemsChanged:{position:2,removed:0,added:1},survivors:2,rule:`the OTHER door — an array the caller ASSIGNED and kept a reference to. Closing only the read-back one leaves the same comparison reading the new value on both sides, by the other route`}];function applyListReadback(e,t){if(t===`append`)e.push({value:`z`,label:`Z`});else if(t===`relabel-first`){let t=e[0];t&&(t.label=`Renamed`)}else e.shift();return e}const l=[{selected:1,length:3,result:1,rule:`a position the new model has is kept`},{selected:5,length:3,result:0,rule:"a position past the end falls back to 0 — `GtkSingleSelection` autoselects rather than deselecting"},{selected:-1,length:3,result:0,rule:"the SENTINEL falls back to 0 too, which is how a widget recovers a selection when its model grows; a one-sided `selected >= length` would leave the -1 standing"},{selected:0,length:0,result:-1,rule:`an EMPTY model has no 0 to fall back to, so it lands on the sentinel and a placeholder becomes drawable`},{selected:NaN,length:3,result:0,rule:"a non-finite position addresses no item — the same answer as one past the end, so a `parseInt` of a malformed attribute cannot poison the index"}],u=[{change:{kind:`attached`,id:`C`,position:2,previousPosition:-1},itemsChanged:{position:2,removed:0,added:1},before:[`A`,`B`],after:[`A`,`B`,`C`],rule:"attached is one addition at the new position; `previousPosition` is -1 because the page had none"},{change:{kind:`detached`,id:`B`,position:1,previousPosition:1},itemsChanged:{position:1,removed:1,added:0},before:[`A`,`B`,`C`],after:[`A`,`C`],rule:`detached is one removal at the position it was removed FROM`},{change:{kind:`updated`,id:`B`,position:1,previousPosition:1},itemsChanged:{position:1,removed:1,added:1},before:[`A`,`B`,`C`],after:[`A`,`B`,`C`],rule:'a per-page notify is removed-1/added-1 at that position — `GListModel` has no other verb for "this item is different now" — and it moves nothing'},{change:{kind:`reordered`,id:`D`,position:1,previousPosition:3},itemsChanged:{position:1,removed:3,added:3},before:[`A`,`B`,`C`,`D`],after:[`A`,`D`,`B`,`C`],rule:`a move BACKWARDS is the span between the two positions, re-added in the new order`},{change:{kind:`reordered`,id:`A`,position:2,previousPosition:0},itemsChanged:{position:0,removed:3,added:3},before:[`A`,`B`,`C`,`D`],after:[`B`,`C`,`A`,`D`],rule:`a move FORWARDS spans the same way — the position is the LOWER of the two, so the range covers both ends`},{change:{kind:`pinned`,id:`C`,position:0,previousPosition:2},itemsChanged:{position:0,removed:3,added:3},before:[`A`,`B`,`C`],after:[`C`,`A`,`B`],rule:`pinning is a flip AND a re-order, so it reports as the move it is rather than as an update in place`}];function replayTabPagesAsSplices(t,n){let r=[...t];for(let t of n){let{position:n,removed:i,added:a}=e(t),o=r.splice(n,i);if(a===0)continue;if(t.kind===`attached`){r.splice(n,0,t.id);continue}if(t.kind===`updated`){r.splice(n,0,...o);continue}let s=o.filter(e=>e!==t.id);s.splice(t.position-n,0,t.id),r.splice(n,0,...s)}return r}export{s as LIST_ITEMS_CHANGED_VECTORS,c as LIST_MODEL_OWNERSHIP_VECTORS,t as LIST_NORMALIZE_VECTORS,n as LIST_PARSE_VECTORS,l as LIST_SELECTION_CLAMP_VECTORS,u as TAB_PAGES_ITEMS_CHANGED_VECTORS,applyListReadback,replayTabPagesAsSplices};
1
+ import"../_virtual/_rolldown/runtime.js";import{GjsifyOptionList as e}from"../option-list.js";import{tabViewItemsChanged as t}from"../tab-view.js";function stringItem(e){return{string:e}}function listSource(...e){return{get_n_items:()=>e.length,get_item:t=>e[t]??null}}const n=[{input:[`Cyan`,`Magenta`],model:[{value:`Cyan`,label:`Cyan`},{value:`Magenta`,label:`Magenta`}],rule:"a bare string is both value and label — `Gtk.StringList`, which is what a combo row is fed in the common case"},{input:[{value:`a`,label:`One`}],model:[{value:`a`,label:`One`}],rule:`a full descriptor passes through unchanged`},{input:[{label:`Apple`}],model:[{value:`Apple`,label:`Apple`}],rule:"a label with no value is addressable BY that label — otherwise the item answers to `undefined` and `selectedValue` can never reach it"},{input:[{value:`k`}],model:[{value:`k`,label:`k`}],rule:`a value with no label draws its value, so an item is never blank by omission`},{input:[{value:7,label:42}],model:[{value:`7`,label:`42`}],rule:`both halves are stringified: the model is a string list on GTK, and a number that stayed a number would fail an === against the attribute it round-trips through`},{input:[{value:``,label:`blank`}],model:[{value:``,label:`blank`}],rule:`an EMPTY value is a value — it is not missing, so the label does not stand in for it`},{input:[],model:[],rule:`the empty model normalises to the empty model, which is the state a placeholder is drawn from`},{input:listSource(stringItem(`Cyan`),stringItem(`Magenta`)),model:[{value:`Cyan`,label:`Cyan`},{value:`Magenta`,label:`Magenta`}],rule:"a model of `Gtk.StringObject`s reads as its strings — the same model an array of those strings makes"},{input:listSource(),model:[],rule:`an EMPTY model is the empty model, not a model the normaliser declines to read`},{input:listSource({value:`a`,label:`One`}),model:[{value:`a`,label:`One`}],rule:`an item that is no string object meets the descriptor rule, the one an array entry meets`},{input:listSource({}),model:[{value:``,label:``}],rule:"an item with neither half is the empty descriptor `{}` already is — drawing it would need `expression`, which ADR 0122 leaves out"}];function listModelForInput(t){return Array.isArray(t)?e.new(t):t}const r=[{attribute:`["a","b"]`,model:[{value:`a`,label:`a`},{value:`b`,label:`b`}],rule:`the string-array form, which is what markup writes in the common case`},{attribute:`[{"value":"a","label":"A"}]`,model:[{value:`a`,label:`A`}],rule:`the descriptor form`},{attribute:`[not json`,model:[],rule:`unparseable JSON is an author slip and yields the empty model — it must not stop the element upgrading`},{attribute:`{"a":1}`,model:[],rule:"well-formed JSON that is not an ARRAY is the second, different slip, and it answers the same way rather than throwing on `.map`"},{attribute:``,model:[],rule:`an empty attribute is an empty model, not a parse attempt`}],i={value:`a`,label:`A`},a={value:`b`,label:`B`},o={value:`c`,label:`C`},s=[i,a,o],c=[{previous:[],next:s,change:{position:0,removed:0,added:3},survivors:0,rule:`the first assignment adds everything at 0 — there is nothing to carry over`},{previous:s,next:[...s,{value:`d`,label:`D`}],change:{position:3,removed:0,added:1},survivors:3,rule:`an APPEND touches one position: three views stand, and this is the row a rebuild fails while the model still reads correct`},{previous:s,next:[{value:`z`,label:`Z`},...s],change:{position:0,removed:0,added:1},survivors:3,rule:`a PREPEND is one insertion at 0, not a shift of everything after it — positions move, nodes do not`},{previous:s,next:[i,o],change:{position:1,removed:1,added:0},survivors:2,rule:`a removal from the middle: the shared suffix is what keeps it one item wide`},{previous:s,next:[i,{value:`b`,label:`Renamed`},o],change:{position:1,removed:1,added:1},survivors:2,rule:"a RELABELLED item at an unchanged value is inside the range — comparing by value alone would leave the old text on screen, which is what `selection_item_changed` exists for upstream"},{previous:s,next:s,change:null,survivors:3,rule:`an equal model emits NOTHING, as GTK does — a renderer that rebuilt here would discard three live views for no change at all`},{previous:s,next:[{value:`a`,label:`A`},{value:`b`,label:`B`},{value:`c`,label:`C`}],change:null,survivors:3,rule:`equality is STRUCTURAL, not by array identity: a caller that rebuilds its array every render must not force a rebuild here`},{previous:s,next:[],change:{position:0,removed:3,added:0},survivors:0,rule:`emptying the model removes everything from 0`},{previous:s,next:[o,a,i],change:{position:0,removed:3,added:3},survivors:0,rule:"a REVERSAL is the whole span: `items-changed` has no vocabulary for a move, and neither does `g_list_store_move`, which reports one the same way"}],l=[{initial:[i,a],source:`options`,op:`append`,model:[i,a],itemsChanged:null,survivors:2,rule:`the options read back out of a model are a COPY — pushing onto them moves nothing, because the list holds items and not that array`},{initial:[i,a],source:`options`,op:`relabel-first`,model:[i,a],itemsChanged:null,survivors:2,rule:`and the copy is per ITEM: relabelling a descriptor read back leaves the item it came from alone, so no text moves without an emission`},{initial:[i,a],source:`input`,op:`append`,model:[i,a],itemsChanged:null,survivors:2,rule:`the OTHER array a caller holds — the one they authored and handed over. The list read it once; pushing onto it afterwards reaches nothing`},{initial:[i,a],source:`input`,op:`relabel-first`,model:[i,a],itemsChanged:null,survivors:2,rule:`the same per-item copy on the way IN, which is the door a constructor that stored the caller descriptors would leave open`},{initial:[i,a],source:`model`,op:`append`,model:[i,a,{value:`z`,label:`Z`}],itemsChanged:{position:2,removed:0,added:1},survivors:2,rule:`appending THROUGH the model is one insertion at the end — the only door that moves the list, and it emits the splice for it`},{initial:[i,a],source:`model`,op:`relabel-first`,model:[{value:`a`,label:`Renamed`},a],itemsChanged:{position:0,removed:1,added:1},survivors:1,rule:`relabelling is a REPLACEMENT of the item, because an item is immutable: one out, one in, at the position that changed`},{initial:[i,a,o],source:`model`,op:`remove-first`,model:[a,o],itemsChanged:{position:0,removed:1,added:0},survivors:2,rule:`the shrink direction, where the two survivors are the point: a renderer that rebuilt would report none`}];function applyListReadback(e,t){if(t===`append`)e.push({value:`z`,label:`Z`});else if(t===`relabel-first`){let t=e[0];t&&(t.label=`Renamed`)}else e.shift();return e}function applyListMutation(e,t){t===`append`?e.append({value:`z`,label:`Z`}):t===`relabel-first`?e.splice(0,1,[{value:`a`,label:`Renamed`}]):e.remove(0)}const u=[{change:{kind:`attached`,id:`C`,position:2,previousPosition:-1},itemsChanged:{position:2,removed:0,added:1},before:[`A`,`B`],after:[`A`,`B`,`C`],rule:"attached is one addition at the new position; `previousPosition` is -1 because the page had none"},{change:{kind:`detached`,id:`B`,position:1,previousPosition:1},itemsChanged:{position:1,removed:1,added:0},before:[`A`,`B`,`C`],after:[`A`,`C`],rule:`detached is one removal at the position it was removed FROM`},{change:{kind:`updated`,id:`B`,position:1,previousPosition:1},itemsChanged:{position:1,removed:1,added:1},before:[`A`,`B`,`C`],after:[`A`,`B`,`C`],rule:'a per-page notify is removed-1/added-1 at that position — `GListModel` has no other verb for "this item is different now" — and it moves nothing'},{change:{kind:`reordered`,id:`D`,position:1,previousPosition:3},itemsChanged:{position:1,removed:3,added:3},before:[`A`,`B`,`C`,`D`],after:[`A`,`D`,`B`,`C`],rule:`a move BACKWARDS is the span between the two positions, re-added in the new order`},{change:{kind:`reordered`,id:`A`,position:2,previousPosition:0},itemsChanged:{position:0,removed:3,added:3},before:[`A`,`B`,`C`,`D`],after:[`B`,`C`,`A`,`D`],rule:`a move FORWARDS spans the same way — the position is the LOWER of the two, so the range covers both ends`},{change:{kind:`pinned`,id:`C`,position:0,previousPosition:2},itemsChanged:{position:0,removed:3,added:3},before:[`A`,`B`,`C`],after:[`C`,`A`,`B`],rule:`pinning is a flip AND a re-order, so it reports as the move it is rather than as an update in place`}];function replayTabPagesAsSplices(e,n){let r=[...e];for(let e of n){let{position:n,removed:i,added:a}=t(e),o=r.splice(n,i);if(a===0)continue;if(e.kind===`attached`){r.splice(n,0,e.id);continue}if(e.kind===`updated`){r.splice(n,0,...o);continue}let s=o.filter(t=>t!==e.id);s.splice(e.position-n,0,e.id),r.splice(n,0,...s)}return r}export{c as LIST_ITEMS_CHANGED_VECTORS,l as LIST_MODEL_OWNERSHIP_VECTORS,n as LIST_NORMALIZE_VECTORS,r as LIST_PARSE_VECTORS,u as TAB_PAGES_ITEMS_CHANGED_VECTORS,applyListMutation,applyListReadback,listModelForInput,replayTabPagesAsSplices};
@@ -1 +1 @@
1
- const e=[{label:`One`,value:`a`},{label:`Two`,value:`b`}],t=[{name:`programmatic index set`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],rule:"a changed position reaches the selection, whose notify becomes `notify::selected` (:788 → :154)"},{name:`setting the index already held`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setSelectedIndex`,index:1}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],rule:`the setter returns before touching the selection when the position holds (:785-786) — no notify`},{name:`the chooser pick`,steps:[{op:`setModel`,model:e},{op:`select`,index:1}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!0}],rule:"the popup routes its position through the SAME setter (:209); only the `interactive` tag differs, and that tag is ours"},{name:`picking the option already selected`,steps:[{op:`setModel`,model:e},{op:`select`,index:0}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1}],rule:`the same-position guard (:785-786) applies to the user path too — reopening and re-picking notifies nothing`},{name:`a dismissed chooser`,steps:[{op:`setModel`,model:e},{op:`select`,index:-1}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1}],rule:`no C equivalent: a dismissed native sheet resolves to the cancel label, so the renderer looks up -1 — the guard is the substitution's`},{name:`select by value`,steps:[{op:`setModel`,model:e},{op:`setSelectedValue`,value:`b`}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],rule:`a value maps to the FIRST option carrying it; the port addition over the C, whose model is positional`},{name:`select by an unknown value`,steps:[{op:`setModel`,model:e},{op:`setSelectedValue`,value:`zzz`}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1}],rule:`an unknown value is a no-op, never a reset to 0 — a mistyped binding must not silently move the selection`},{name:`the model is replaced at the same index`,steps:[{op:`setModel`,model:[{label:`First`,value:`a`}]},{op:`setModel`,model:[{label:`Renamed`,value:`a`}]}],selected:0,value:`a`,label:`Renamed`,emitted:[{selected:0,value:`a`,label:`First`,interactive:!1},{selected:0,value:`a`,label:`Renamed`,interactive:!1}],rule:"the index did not move but the ITEM did — `selection_item_changed` (:157-185) repaints off the item, not the position"},{name:`the model shrinks past the selection`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setModel`,model:[{label:`Only`,value:`a`}]}],selected:0,value:`a`,label:`Only`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1},{selected:0,value:`a`,label:`Only`,interactive:!1}],rule:`a selection past the end of the new model falls back to 0 — GtkSingleSelection autoselects upstream, whose C is not vendored here, so this row is the ports' shared answer`},{name:`an index past the end`,steps:[{op:`setModel`,model:[{label:`Only`,value:`a`}]},{op:`setSelectedIndex`,index:5}],selected:5,value:``,label:``,emitted:[{selected:0,value:`a`,label:`Only`,interactive:!1},{selected:5,value:``,label:``,interactive:!1}],rule:`the index is NOT clamped (the C takes any guint); the empty value/label is how "nothing to draw" is expressed here`},{name:`an empty model`,steps:[{op:`setModel`,model:[]}],selected:-1,value:``,label:``,emitted:[{selected:-1,value:``,label:``,interactive:!1}],rule:`GTK_INVALID_LIST_POSITION (:593-596, :809-810) — an empty model has no index 0 to autoselect`},{name:`picking from an empty model`,steps:[{op:`setModel`,model:[]},{op:`select`,index:0}],selected:-1,value:``,label:``,emitted:[{selected:-1,value:``,label:``,interactive:!1}],rule:`there is no option 0 to pick — and the renderers never open a chooser over an empty model either`},{name:`emptying a model that had a selection`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setModel`,model:[]}],selected:-1,value:``,label:``,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1},{selected:-1,value:``,label:``,interactive:!1}],rule:`the selection does NOT survive as index 0 — there is nothing at 0 any more`},{name:`a model that is emptied and refilled`,steps:[{op:`setModel`,model:e},{op:`setModel`,model:[]},{op:`setModel`,model:e}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:-1,value:``,label:``,interactive:!1},{selected:0,value:`a`,label:`One`,interactive:!1}],rule:`autoselect runs again, so the sentinel recovers to 0 — it is BELOW the range, which a one-sided >= length check leaves in place`},{name:`a model with an empty first label is still a selection`,steps:[{op:`setModel`,model:[{label:``,value:`blank`}]}],selected:0,value:`blank`,label:``,emitted:[{selected:0,value:`blank`,label:``,interactive:!1}],rule:`the case the sentinel exists to separate: an empty LABEL, not an empty model`}],n=[{count:0,presentsChooser:!1,rule:`an empty model is not a chooser`},{count:1,presentsChooser:!1,rule:`ONE option is not a choice — the arrow goes and the row goes inert`},{count:2,presentsChooser:!0,rule:`two is the smallest real choice — the predicate is > 1, not >= 1`},{count:5,presentsChooser:!0,rule:`and anything above it`}],r=[{names:[`list`,`grid`,`columns`],activeName:`grid`,kept:3,index:1,active:1,rule:`selects the toggle carrying the name`},{names:[`list`,`grid`,`columns`],activeName:`columns`,kept:3,index:2,active:2,rule:`the last toggle is reachable — the name is applied after every toggle is in`},{names:[`list`,`grid`,`list`],activeName:`list`,kept:2,index:0,active:0,rule:`a name already taken is refused WITH its toggle — the group keeps two, and the name means the first`},{names:[null,`grid`],activeName:`grid`,kept:2,index:1,active:1,rule:`an unnamed toggle is kept and takes no part in the lookup`},{names:[`list`,`grid`],activeName:`missing`,kept:2,index:-1,active:0,rule:`a name no toggle carries changes nothing — the first toggle, which add made active, stays`}];export{n as COMBO_CHOOSER_VECTORS,t as COMBO_SELECTION_VECTORS,r as TOGGLE_ACTIVE_NAME_VECTORS};
1
+ const e=[{label:`One`,value:`a`},{label:`Two`,value:`b`}],t=[`selected`,`selected-item`,`model`],n=[`selected`,`selected-item`],r=[{name:`programmatic index set`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],notified:[...t,...n],rule:"a changed position reaches the selection, whose notify becomes `notify::selected` (:788 → :154)"},{name:`setting the index already held`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setSelectedIndex`,index:1}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],notified:[...t,...n],rule:`the setter returns before touching the selection when the position holds (:785-786) — no notify`},{name:`the chooser pick`,steps:[{op:`setModel`,model:e},{op:`select`,index:1}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!0}],notified:[...t,...n],rule:"the popup routes its position through the SAME setter (:209); only the `interactive` tag differs, and that tag is ours"},{name:`picking the option already selected`,steps:[{op:`setModel`,model:e},{op:`select`,index:0}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1}],notified:t,rule:`the same-position guard (:785-786) applies to the user path too — reopening and re-picking notifies nothing`},{name:`a dismissed chooser`,steps:[{op:`setModel`,model:e},{op:`select`,index:-1}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1}],notified:t,rule:`no C equivalent: a dismissed native sheet resolves to the cancel label, so the renderer looks up -1 — the guard is the substitution's`},{name:`select by value`,steps:[{op:`setModel`,model:e},{op:`setSelectedValue`,value:`b`}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],notified:[...t,...n],rule:`a value maps to the FIRST option carrying it; the port addition over the C, whose model is positional`},{name:`select by an unknown value`,steps:[{op:`setModel`,model:e},{op:`setSelectedValue`,value:`zzz`}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1}],notified:t,rule:`an unknown value is a no-op, never a reset to 0 — a mistyped binding must not silently move the selection`},{name:`the model is replaced at the same index`,steps:[{op:`setModel`,model:[{label:`First`,value:`a`}]},{op:`setModel`,model:[{label:`Renamed`,value:`a`}]}],selected:0,value:`a`,label:`Renamed`,emitted:[{selected:0,value:`a`,label:`First`,interactive:!1},{selected:0,value:`a`,label:`Renamed`,interactive:!1}],notified:[...t,...t],rule:"the index did not move but the ITEM did — `selection_item_changed` (:157-185) repaints off the item, not the position"},{name:`the model shrinks past the selection`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setModel`,model:[{label:`Only`,value:`a`}]}],selected:0,value:`a`,label:`Only`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1},{selected:0,value:`a`,label:`Only`,interactive:!1}],notified:[...t,...n,...t],rule:`a selection the new model does not have cannot survive — and the row below says it would not have survived even if it did`},{name:`a new model with an equal shape`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setModel`,model:e}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1},{selected:0,value:`a`,label:`One`,interactive:!1}],notified:[...t,...n,...t],rule:`a model write RESETS the selection to 0, it does not clamp it: index 1 exists in the new model and is given up anyway (measured — GtkSingleSelection autoselects over the model it was just handed, having no memory of the one before it)`},{name:`assigning the model already held`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setModelAgain`}],selected:1,value:`b`,label:`Two`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1}],notified:[...t,...n],rule:"the row above by identity rather than by contents — `model` holds an OBJECT now (ADR 0122 § 4), so assigning the one already held is the no-op `g_object_set` makes it, and the selection survives what an equal-but-distinct model resets"},{name:`an index past the end`,steps:[{op:`setModel`,model:[{label:`Only`,value:`a`}]},{op:`setSelectedIndex`,index:5}],selected:0,value:`a`,label:`Only`,emitted:[{selected:0,value:`a`,label:`Only`,interactive:!1}],notified:t,rule:`an index the model does not have is IGNORED — silently, with no notify and no error, on both widgets (measured; see the module header for the per-renderer answers this replaced)`},{name:`an empty model`,steps:[{op:`setModel`,model:[]}],selected:-1,value:``,label:``,emitted:[{selected:-1,value:``,label:``,interactive:!1}],notified:t,rule:`GTK_INVALID_LIST_POSITION (:593-596, :809-810) — an empty model has no index 0 to autoselect, and still notifies all three`},{name:`picking from an empty model`,steps:[{op:`setModel`,model:[]},{op:`select`,index:0}],selected:-1,value:``,label:``,emitted:[{selected:-1,value:``,label:``,interactive:!1}],notified:t,rule:`there is no option 0 to pick — and the renderers never open a chooser over an empty model either`},{name:`emptying a model that had a selection`,steps:[{op:`setModel`,model:e},{op:`setSelectedIndex`,index:1},{op:`setModel`,model:[]}],selected:-1,value:``,label:``,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:1,value:`b`,label:`Two`,interactive:!1},{selected:-1,value:``,label:``,interactive:!1}],notified:[...t,...n,...t],rule:"the selection does NOT survive as index 0 — there is nothing at 0 any more. An EMPTY model still notifies all three, because the write is what notifies and not the outcome; only `model = null` notifies `model` alone"},{name:`a model that is emptied and refilled`,steps:[{op:`setModel`,model:e},{op:`setModel`,model:[]},{op:`setModel`,model:e}],selected:0,value:`a`,label:`One`,emitted:[{selected:0,value:`a`,label:`One`,interactive:!1},{selected:-1,value:``,label:``,interactive:!1},{selected:0,value:`a`,label:`One`,interactive:!1}],notified:[...t,...t,...t],rule:`autoselect runs again, so the sentinel recovers to 0 — it is BELOW the range, which a one-sided >= length check leaves in place`},{name:`a model with an empty first label is still a selection`,steps:[{op:`setModel`,model:[{label:``,value:`blank`}]}],selected:0,value:`blank`,label:``,emitted:[{selected:0,value:`blank`,label:``,interactive:!1}],notified:t,rule:`the case the sentinel exists to separate: an empty LABEL, not an empty model`}],i=[{label:`One`,value:`a`},{label:`Two`,value:`b`},{label:`Three`,value:`c`}],a=[{name:`a change entirely after the selection`,initial:i,selected:0,splice:{position:2,removed:1,added:[{label:`Gamma`,value:`g`}]},result:0,value:`a`,notified:[],rule:`the selected item neither moved nor changed — GTK emits nothing, and a widget that re-emitted here would re-run every binding on every append`},{name:`a change entirely before the selection`,initial:i,selected:2,splice:{position:0,removed:0,added:[{label:`Zero`,value:`z`}]},result:3,value:`c`,notified:[`selected`],rule:"the index shifts by `added - removed` so it keeps addressing the SAME item — `selected-item` is therefore silent, which is what distinguishes this from every other row"},{name:`the selected item is replaced in place`,initial:i,selected:1,splice:{position:1,removed:1,added:[{label:`Beta`,value:`beta`}]},result:1,value:`beta`,notified:[`selected-item`],rule:"the mirror image: the position held and the item did not, so `selected-item` notifies alone — a widget keyed on `notify::selected` alone draws the old label here"},{name:`the selected item is removed`,initial:i,selected:2,splice:{position:2,removed:1,added:[]},result:1,value:`b`,notified:[`selected-item`,`selected`],rule:"the selection clamps to `min(position, n_items - 1)`, and BOTH notify — `selected-item` first"},{name:`every item is removed`,initial:i,selected:0,splice:{position:0,removed:3,added:[]},result:-1,value:``,notified:[`selected-item`,`selected`],rule:`an emptied model has no position to clamp onto, so the clamp lands on the sentinel — same two notifies, same order`},{name:`the first item arrives in an empty model`,initial:[],selected:-1,splice:{position:0,removed:0,added:[{label:`One`,value:`a`}]},result:0,value:`a`,notified:[`selected-item`,`selected`],rule:`autoselect takes 0 the moment there is a 0 — the sentinel is a state a growing model recovers from, not one it stays in`}],o=[{count:0,presentsChooser:!1,rule:`an empty model is not a chooser`},{count:1,presentsChooser:!1,rule:`ONE option is not a choice — the arrow goes and the row goes inert`},{count:2,presentsChooser:!0,rule:`two is the smallest real choice — the predicate is > 1, not >= 1`},{count:5,presentsChooser:!0,rule:`and anything above it`}],s=[{names:[`list`,`grid`,`columns`],activeName:`grid`,kept:3,index:1,active:1,rule:`selects the toggle carrying the name`},{names:[`list`,`grid`,`columns`],activeName:`columns`,kept:3,index:2,active:2,rule:`the last toggle is reachable — the name is applied after every toggle is in`},{names:[`list`,`grid`,`list`],activeName:`list`,kept:2,index:0,active:0,rule:`a name already taken is refused WITH its toggle — the group keeps two, and the name means the first`},{names:[null,`grid`],activeName:`grid`,kept:2,index:1,active:1,rule:`an unnamed toggle is kept and takes no part in the lookup`},{names:[`list`,`grid`],activeName:`missing`,kept:2,index:-1,active:0,rule:`a name no toggle carries changes nothing — the first toggle, which add made active, stays`}];export{o as COMBO_CHOOSER_VECTORS,a as COMBO_ITEMS_CHANGED_VECTORS,r as COMBO_SELECTION_VECTORS,s as TOGGLE_ACTIVE_NAME_VECTORS};
@@ -1 +1 @@
1
- const e=[{name:`icon-name (test_adw_split_button_icon_name, tests/test-split-button.c:17-55)`,steps:[{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`icon-name`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`first icon on an empty button notifies icon-name only (:31-32)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!1,notified:[],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:"same icon again is a no-op — `if (!g_strcmp0 …) return` (:34-36 / c:756-757)"},{op:`icon-name`,value:`edit-find-symbolic`,changed:!0,notified:[`child`,`icon-name`],mode:`icon`,label:null,iconName:`edit-find-symbolic`,styleClasses:[`image-button`],rule:`icon→icon still notifies child: the internal GtkImage is non-NULL (:38-40 / c:762-763)`},{op:`label`,value:`Open`,changed:!0,notified:[`icon-name`,`child`,`label`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`setting the label CLEARS the icon — get_icon_name() is NULL after (:42-44)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`label`,`child`,`icon-name`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`and back: setting the icon CLEARS the label (:46-48)`},{op:`child`,value:`child1`,changed:!0,notified:[`icon-name`,`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`a child clears both, and carries neither style class (:50-52)`}]},{name:`label (test_adw_split_button_label, tests/test-split-button.c:57-95)`,steps:[{op:`label`,value:`Open`,changed:!0,notified:[`label`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`first label on an empty button notifies label only (:71-72)`},{op:`label`,value:`Open`,changed:!1,notified:[],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`same label again is a no-op (:74-76 / c:668-669)`},{op:`label`,value:`Find`,changed:!0,notified:[`child`,`label`],mode:`label`,label:`Find`,iconName:null,styleClasses:[`text-button`],rule:`label→label notifies child: the internal GtkLabel is non-NULL (:78-80 / c:674-675)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`label`,`child`,`icon-name`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`setting the icon CLEARS the label — get_label() is NULL after (:82-84)`},{op:`label`,value:`Open`,changed:!0,notified:[`icon-name`,`child`,`label`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`and back again (:86-88)`},{op:`child`,value:`child1`,changed:!0,notified:[`label`,`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`a child clears the label (:90-92)`}]},{name:`child (test_adw_split_button_child, tests/test-split-button.c:125-170)`,steps:[{op:`child`,value:null,changed:!1,notified:[],mode:`empty`,label:null,iconName:null,styleClasses:[],rule:`clearing an already-empty button is a no-op (:143-144 / c:806-807)`},{op:`child`,value:`child1`,changed:!0,notified:[`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`first child notifies child only (:146-148)`},{op:`child`,value:`child2`,changed:!0,notified:[`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`child→child notifies once; neither label nor icon was set (:150-152)`},{op:`label`,value:`Open`,changed:!0,notified:[`child`,`label`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`the label replaces the app child — get_child() is no longer it (:154-159)`},{op:`child`,value:`child3`,changed:!0,notified:[`label`,`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`a child clears the label back out (:161-163)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`child`,`icon-name`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`the icon replaces the app child (:165-167)`}]},{name:`empty + whitespace labels (derived from adw-split-button.c:151-159, not asserted upstream)`,steps:[{op:`label`,value:``,changed:!0,notified:[`label`],mode:`label`,label:``,iconName:null,styleClasses:[],rule:"an empty label is SET (non-NULL) but `label[0]` is NUL — no text-button class (c:156)"},{op:`icon-name`,value:``,changed:!0,notified:[`label`,`child`,`icon-name`],mode:`icon`,label:null,iconName:``,styleClasses:[],rule:`the empty label is still a non-NULL pointer, so it is notified as cleared (c:760-761)`},{op:`label`,value:` `,changed:!0,notified:[`icon-name`,`child`,`label`],mode:`label`,label:` `,iconName:null,styleClasses:[`text-button`],rule:"whitespace is a valid label: nothing trims, and `label[0]` is a space (c:156-159)"},{op:`label`,value:` `,changed:!1,notified:[],mode:`label`,label:` `,iconName:null,styleClasses:[`text-button`],rule:`g_strcmp0 is a byte compare — the same two spaces are the same label`},{op:`label`,value:`Änderungen speichern…`,changed:!0,notified:[`child`,`label`],mode:`label`,label:`Änderungen speichern…`,iconName:null,styleClasses:[`text-button`],rule:`non-ASCII is stored verbatim — no normalisation, no escaping (c:661-682)`}]}],t=[{label:`Open`,iconName:null,classes:[`text-button`],rule:`a label gives text-button (c:156-159)`},{label:null,iconName:`document-open-symbolic`,classes:[`image-button`],rule:`an icon gives image-button (c:151-154)`},{label:``,iconName:null,classes:[],rule:"`label[0]` is NUL — an empty label carries NO class"},{label:null,iconName:``,classes:[],rule:"`icon_name[0]` is NUL — an empty icon name carries NO class"},{label:` `,iconName:null,classes:[`text-button`],rule:`two spaces are a non-empty label — no trimming`},{label:` `,iconName:null,classes:[`text-button`],rule:`any non-NUL first byte counts, tab included`},{label:null,iconName:null,classes:[],rule:`a child (or nothing) carries neither class (c:145-165)`},{label:`Open`,iconName:`document-open-symbolic`,classes:[`image-button`,`text-button`],rule:`the two branches are independent and evaluated icon-first (c:151-159)`}],n=[{tooltip:``,text:`More Options`,markup:!1,rule:`unset/cleared restores the translated default as TEXT`},{tooltip:`Some tooltip`,text:`Some tooltip`,markup:!0,rule:`a set tooltip is markup (c:1046-1047)`},{tooltip:`Some <b>tooltip</b>`,text:`Some <b>tooltip</b>`,markup:!0,rule:`Pango markup passes through unescaped (c:428)`},{tooltip:` `,text:` `,markup:!0,rule:"`*tooltip` is a space — non-NUL, so it is a real tooltip"}],r=[{direction:`down`,arrowIcon:`pan-down-symbolic`,popupDirection:`down`,rule:"the default (c:420); glyph from `menubutton arrow.down`, not overridden (_buttons.scss:457-459)"},{direction:`up`,arrowIcon:`pan-up-symbolic`,popupDirection:`up`,rule:"`menubutton arrow.up`, not overridden (_buttons.scss:460-462)"},{direction:`left`,arrowIcon:`pan-start-symbolic`,popupDirection:`left`,rule:`left uses pan-START, not pan-left (_buttons.scss:463-465)`},{direction:`right`,arrowIcon:`pan-end-symbolic`,popupDirection:`right`,rule:`right uses pan-END (_buttons.scss:466-468)`},{direction:`none`,arrowIcon:`pan-down-symbolic`,popupDirection:`down`,rule:"WINNING selector `splitbutton > menubutton > button > arrow.none` (_buttons.scss:621-623) OVERRIDES `menubutton arrow.none` (:454-456): inside a split button `none` draws pan-down, NOT open-menu — and pops down (c:415), so it is indistinguishable from `down`"}],i=[{direction:`none`,arrowIcon:`open-menu-symbolic`,popupDirection:`down`,rule:"`menubutton arrow.none` (_buttons.scss:454-456) — the hamburger, unopposed here; placement still down (c:415 via the shared GtkMenuButton, c:971/:997)"},{direction:`down`,arrowIcon:`pan-down-symbolic`,popupDirection:`down`,rule:"`menubutton arrow.down` (_buttons.scss:457-459) — identical to the split button row"},{direction:`up`,arrowIcon:`pan-up-symbolic`,popupDirection:`up`,rule:"`menubutton arrow.up` (_buttons.scss:460-462)"},{direction:`left`,arrowIcon:`pan-start-symbolic`,popupDirection:`left`,rule:"`menubutton arrow.left` (_buttons.scss:463-465)"},{direction:`right`,arrowIcon:`pan-end-symbolic`,popupDirection:`right`,rule:"`menubutton arrow.right` (_buttons.scss:466-468)"}],a={active:!1,checked:!1,keyboardActivating:!1},o=[{action:a,dropdown:a,active:!1,checked:!1,rule:`idle folds to idle`},{action:{...a,active:!0},dropdown:a,active:!0,checked:!1,rule:`a pressed action half makes the WHOLE control active (c:134-137)`},{action:a,dropdown:{...a,active:!0},active:!0,checked:!1,rule:`so does a pressed dropdown half — the flags are OR-ed (c:127-128)`},{action:a,dropdown:{...a,checked:!0},active:!1,checked:!0,rule:`an open menu checks the arrow half, and the root with it (c:139-142)`},{action:{...a,keyboardActivating:!0},dropdown:a,active:!0,checked:!1,rule:`the keyboard-activating CSS class counts as ACTIVE (c:130-135)`},{action:{...a,active:!0},dropdown:{...a,checked:!0},active:!0,checked:!0,rule:`active and checked are independent folds`}],s=[{kind:`item`,label:`Copy`,action:`app.copy`},{kind:`item`,label:`Copy`,action:`app.copy-special`},{kind:`submenu`,label:`More`,items:[{kind:`item`,label:`Copy`,action:`app.copy-as`}]}],c=[{model:s,path:[1],activated:{kind:`item`,label:`Copy`,action:`app.copy-special`},rule:`the SECOND of two identically labelled entries — the indexOf bug`},{model:s,path:[0],activated:{kind:`item`,label:`Copy`,action:`app.copy`},rule:`position 0`},{model:s,path:[2,0],activated:{kind:`item`,label:`Copy`,action:`app.copy-as`},rule:`a THIRD entry with the same label, inside a submenu: only a path tells it from the other two`},{model:s,path:[2],activated:null,rule:`a submenu is not an item — opening it activates nothing`},{model:s,path:[3],activated:null,rule:`a position past n_items has no item`},{model:s,path:[-1],activated:null,rule:`a negative position has no item`},{model:s,path:[.5],activated:null,rule:`a fractional position is not a position`},{model:s,path:[],activated:null,rule:`the empty path names the model, not an item`},{model:s,path:[0,0],activated:null,rule:`an item has no children to descend into`},{model:[],path:[0],activated:null,rule:`no menu model → nothing to activate`}],l=[{model:[],popover:!1,enabled:!1,canOpen:!1,rule:`neither → insensitive dropdown; an empty entry list is the renderers’ spelling of "no menu", so a menu-less button must not open an empty popover`},{model:[{kind:`item`,label:`Save as…`,action:`app.save-as`}],popover:!1,enabled:!0,canOpen:!0,rule:`a menu model makes the dropdown live`},{model:[],popover:!0,enabled:!0,canOpen:!0,rule:`so does a popover on its own`},{model:[{kind:`item`,label:`Save as…`}],popover:!0,enabled:!0,canOpen:!0,rule:`setting one dissociates the other, but the dropdown stays live (c:390-403)`},{model:[{kind:`section`,items:[]}],popover:!1,enabled:!0,canOpen:!0,rule:`a model with a node but nothing to DRAW is still a menu — the answer GTK gives for the same empty GMenu section`}];export{i as MENU_BUTTON_DIRECTION_VECTORS,e as SPLIT_BUTTON_CONTENT_VECTORS,r as SPLIT_BUTTON_DIRECTION_VECTORS,l as SPLIT_BUTTON_DROPDOWN_VECTORS,c as SPLIT_BUTTON_MENU_ACTIVATION_VECTORS,o as SPLIT_BUTTON_ROOT_STATE_VECTORS,t as SPLIT_BUTTON_STYLE_CLASS_VECTORS,n as SPLIT_BUTTON_TOOLTIP_VECTORS};
1
+ const e=[{name:`icon-name (test_adw_split_button_icon_name, tests/test-split-button.c:17-55)`,steps:[{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`icon-name`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`first icon on an empty button notifies icon-name only (:31-32)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!1,notified:[],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:"same icon again is a no-op — `if (!g_strcmp0 …) return` (:34-36 / c:756-757)"},{op:`icon-name`,value:`edit-find-symbolic`,changed:!0,notified:[`icon-name`,`child`],mode:`icon`,label:null,iconName:`edit-find-symbolic`,styleClasses:[`image-button`],rule:`icon→icon still notifies child: the internal GtkImage is non-NULL (:38-40 / c:762-763)`},{op:`label`,value:`Open`,changed:!0,notified:[`label`,`child`,`icon-name`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`setting the label CLEARS the icon — get_icon_name() is NULL after (:42-44); the OWN property leads, the two cleared slots follow (measured)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`icon-name`,`child`,`label`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`and back: setting the icon CLEARS the label (:46-48)`},{op:`child`,value:`child1`,changed:!0,notified:[`child`,`icon-name`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`a child clears both, and carries neither style class (:50-52)`}]},{name:`label (test_adw_split_button_label, tests/test-split-button.c:57-95)`,steps:[{op:`label`,value:`Open`,changed:!0,notified:[`label`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`first label on an empty button notifies label only (:71-72)`},{op:`label`,value:`Open`,changed:!1,notified:[],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`same label again is a no-op (:74-76 / c:668-669)`},{op:`label`,value:`Find`,changed:!0,notified:[`label`,`child`],mode:`label`,label:`Find`,iconName:null,styleClasses:[`text-button`],rule:`label→label notifies child: the internal GtkLabel is non-NULL (:78-80 / c:674-675)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`icon-name`,`child`,`label`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`setting the icon CLEARS the label — get_label() is NULL after (:82-84)`},{op:`label`,value:`Open`,changed:!0,notified:[`label`,`child`,`icon-name`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`and back again (:86-88)`},{op:`child`,value:`child1`,changed:!0,notified:[`child`,`label`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`a child clears the label (:90-92)`}]},{name:`child (test_adw_split_button_child, tests/test-split-button.c:125-170)`,steps:[{op:`child`,value:null,changed:!1,notified:[],mode:`empty`,label:null,iconName:null,styleClasses:[],rule:`clearing an already-empty button is a no-op (:143-144 / c:806-807)`},{op:`child`,value:`child1`,changed:!0,notified:[`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`first child notifies child only (:146-148)`},{op:`child`,value:`child2`,changed:!0,notified:[`child`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`child→child notifies once; neither label nor icon was set (:150-152)`},{op:`label`,value:`Open`,changed:!0,notified:[`label`,`child`],mode:`label`,label:`Open`,iconName:null,styleClasses:[`text-button`],rule:`the label replaces the app child — get_child() is no longer it (:154-159)`},{op:`child`,value:`child3`,changed:!0,notified:[`child`,`label`],mode:`child`,label:null,iconName:null,styleClasses:[],rule:`a child clears the label back out (:161-163)`},{op:`icon-name`,value:`document-open-symbolic`,changed:!0,notified:[`icon-name`,`child`],mode:`icon`,label:null,iconName:`document-open-symbolic`,styleClasses:[`image-button`],rule:`the icon replaces the app child (:165-167)`}]},{name:`empty + whitespace labels (derived from adw-split-button.c:151-159, measured on GJS 1.88.1, not asserted upstream)`,steps:[{op:`label`,value:``,changed:!0,notified:[`label`],mode:`label`,label:``,iconName:null,styleClasses:[],rule:"an empty label is SET (non-NULL) but `label[0]` is NUL — no text-button class (c:156)"},{op:`icon-name`,value:``,changed:!0,notified:[`icon-name`,`child`,`label`],mode:`icon`,label:null,iconName:null,styleClasses:[],rule:'an empty icon name reads back NULL — GtkImage normalises `""` to "no icon" (GTK_IMAGE_EMPTY) — while the empty label it cleared was a non-NULL pointer and is notified'},{op:`icon-name`,value:``,changed:!0,notified:[`icon-name`,`child`],mode:`icon`,label:null,iconName:null,styleClasses:[],rule:'and AGAIN: the guard is `g_strcmp0 ("", get_icon_name ())` against that NULL readback, so it can never fire — setting `""` twice notifies twice, the one write on this widget that is never idempotent'},{op:`label`,value:` `,changed:!0,notified:[`label`,`child`],mode:`label`,label:` `,iconName:null,styleClasses:[`text-button`],rule:"whitespace is a valid label: nothing trims, and `label[0]` is a space (c:156-159). No `icon-name` in the sequence: the slot it cleared already read back NULL, so C saw nothing to clear"},{op:`label`,value:` `,changed:!1,notified:[],mode:`label`,label:` `,iconName:null,styleClasses:[`text-button`],rule:`g_strcmp0 is a byte compare — the same two spaces are the same label`},{op:`label`,value:`Änderungen speichern…`,changed:!0,notified:[`label`,`child`],mode:`label`,label:`Änderungen speichern…`,iconName:null,styleClasses:[`text-button`],rule:`non-ASCII is stored verbatim — no normalisation, no escaping (c:661-682)`}]}],t=[{label:`Open`,iconName:null,classes:[`text-button`],rule:`a label gives text-button (c:156-159)`},{label:null,iconName:`document-open-symbolic`,classes:[`image-button`],rule:`an icon gives image-button (c:151-154)`},{label:``,iconName:null,classes:[],rule:"`label[0]` is NUL — an empty label carries NO class"},{label:null,iconName:``,classes:[],rule:'`icon_name[0]` is NUL — an empty icon name carries NO class. Both arms of the branch are tested even though `get_icon_name()` never RETURNS `""` (it reads back NULL), because the C tests the pointer it was handed'},{label:` `,iconName:null,classes:[`text-button`],rule:`two spaces are a non-empty label — no trimming`},{label:` `,iconName:null,classes:[`text-button`],rule:`any non-NUL first byte counts, tab included`},{label:null,iconName:null,classes:[],rule:`a child (or nothing) carries neither class (c:145-165)`},{label:`Open`,iconName:`document-open-symbolic`,classes:[`image-button`,`text-button`],rule:`the two branches are independent and evaluated icon-first (c:151-159)`}],n=[{tooltip:``,text:`More Options`,markup:!1,rule:`unset/cleared restores the translated default as TEXT`},{tooltip:`Some tooltip`,text:`Some tooltip`,markup:!0,rule:`a set tooltip is markup (c:1046-1047)`},{tooltip:`Some <b>tooltip</b>`,text:`Some <b>tooltip</b>`,markup:!0,rule:`Pango markup passes through unescaped (c:428)`},{tooltip:` `,text:` `,markup:!0,rule:"`*tooltip` is a space — non-NUL, so it is a real tooltip"}],r=[{direction:`down`,arrowIcon:`pan-down-symbolic`,popupDirection:`down`,rule:"the default (c:420); glyph from `menubutton arrow.down`, not overridden (_buttons.scss:457-459)"},{direction:`up`,arrowIcon:`pan-up-symbolic`,popupDirection:`up`,rule:"`menubutton arrow.up`, not overridden (_buttons.scss:460-462)"},{direction:`left`,arrowIcon:`pan-start-symbolic`,popupDirection:`left`,rule:`left uses pan-START, not pan-left (_buttons.scss:463-465)`},{direction:`right`,arrowIcon:`pan-end-symbolic`,popupDirection:`right`,rule:`right uses pan-END (_buttons.scss:466-468)`},{direction:`none`,arrowIcon:`pan-down-symbolic`,popupDirection:`down`,rule:"WINNING selector `splitbutton > menubutton > button > arrow.none` (_buttons.scss:621-623) OVERRIDES `menubutton arrow.none` (:454-456): inside a split button `none` draws pan-down, NOT open-menu — and pops down (c:415), so it is indistinguishable from `down`"}],i=[{direction:`none`,arrowIcon:`open-menu-symbolic`,popupDirection:`down`,rule:"`menubutton arrow.none` (_buttons.scss:454-456) — the hamburger, unopposed here; placement still down (c:415 via the shared GtkMenuButton, c:971/:997)"},{direction:`down`,arrowIcon:`pan-down-symbolic`,popupDirection:`down`,rule:"`menubutton arrow.down` (_buttons.scss:457-459) — identical to the split button row"},{direction:`up`,arrowIcon:`pan-up-symbolic`,popupDirection:`up`,rule:"`menubutton arrow.up` (_buttons.scss:460-462)"},{direction:`left`,arrowIcon:`pan-start-symbolic`,popupDirection:`left`,rule:"`menubutton arrow.left` (_buttons.scss:463-465)"},{direction:`right`,arrowIcon:`pan-end-symbolic`,popupDirection:`right`,rule:"`menubutton arrow.right` (_buttons.scss:466-468)"}],a={active:!1,checked:!1,keyboardActivating:!1},o=[{action:a,dropdown:a,active:!1,checked:!1,rule:`idle folds to idle`},{action:{...a,active:!0},dropdown:a,active:!0,checked:!1,rule:`a pressed action half makes the WHOLE control active (c:134-137)`},{action:a,dropdown:{...a,active:!0},active:!0,checked:!1,rule:`so does a pressed dropdown half — the flags are OR-ed (c:127-128)`},{action:a,dropdown:{...a,checked:!0},active:!1,checked:!0,rule:`an open menu checks the arrow half, and the root with it (c:139-142)`},{action:{...a,keyboardActivating:!0},dropdown:a,active:!0,checked:!1,rule:`the keyboard-activating CSS class counts as ACTIVE (c:130-135)`},{action:{...a,active:!0},dropdown:{...a,checked:!0},active:!0,checked:!0,rule:`active and checked are independent folds`}],s=[{kind:`item`,label:`Copy`,action:`app.copy`},{kind:`item`,label:`Copy`,action:`app.copy-special`},{kind:`submenu`,label:`More`,items:[{kind:`item`,label:`Copy`,action:`app.copy-as`}]}],c=[{model:s,path:[1],activated:{kind:`item`,label:`Copy`,action:`app.copy-special`},rule:`the SECOND of two identically labelled entries — the indexOf bug`},{model:s,path:[0],activated:{kind:`item`,label:`Copy`,action:`app.copy`},rule:`position 0`},{model:s,path:[2,0],activated:{kind:`item`,label:`Copy`,action:`app.copy-as`},rule:`a THIRD entry with the same label, inside a submenu: only a path tells it from the other two`},{model:s,path:[2],activated:null,rule:`a submenu is not an item — opening it activates nothing`},{model:s,path:[3],activated:null,rule:`a position past n_items has no item`},{model:s,path:[-1],activated:null,rule:`a negative position has no item`},{model:s,path:[.5],activated:null,rule:`a fractional position is not a position`},{model:s,path:[],activated:null,rule:`the empty path names the model, not an item`},{model:s,path:[0,0],activated:null,rule:`an item has no children to descend into`},{model:[],path:[0],activated:null,rule:`no menu model → nothing to activate`}],l=[{model:[],popover:!1,enabled:!1,canOpen:!1,rule:`neither → insensitive dropdown; an empty entry list is the renderers’ spelling of "no menu", so a menu-less button must not open an empty popover`},{model:[{kind:`item`,label:`Save as…`,action:`app.save-as`}],popover:!1,enabled:!0,canOpen:!0,rule:`a menu model makes the dropdown live`},{model:[],popover:!0,enabled:!0,canOpen:!0,rule:`so does a popover on its own`},{model:[{kind:`item`,label:`Save as…`}],popover:!0,enabled:!0,canOpen:!0,rule:`setting one dissociates the other, but the dropdown stays live (c:390-403)`},{model:[{kind:`section`,items:[]}],popover:!1,enabled:!0,canOpen:!0,rule:`a model with a node but nothing to DRAW is still a menu — the answer GTK gives for the same empty GMenu section`}];export{i as MENU_BUTTON_DIRECTION_VECTORS,e as SPLIT_BUTTON_CONTENT_VECTORS,r as SPLIT_BUTTON_DIRECTION_VECTORS,l as SPLIT_BUTTON_DROPDOWN_VECTORS,c as SPLIT_BUTTON_MENU_ACTIVATION_VECTORS,o as SPLIT_BUTTON_ROOT_STATE_VECTORS,t as SPLIT_BUTTON_STYLE_CLASS_VECTORS,n as SPLIT_BUTTON_TOOLTIP_VECTORS};
@@ -0,0 +1 @@
1
+ import"./_virtual/_rolldown/runtime.js";let e;function registerDefaultTranslate(t){e=t}function registeredDefaultTranslate(){return e}export{registerDefaultTranslate,registeredDefaultTranslate};
package/lib/esm/glib.js CHANGED
@@ -1 +1 @@
1
- import"./_virtual/_rolldown/runtime.js";const e=/^[ \t\n\v\f\r]+|[ \t\n\v\f\r]+$/g;function gStrStrip(t){return t.replace(e,``)}function stringIsNotEmpty(e){return e!=null&&e.length>0}function glibClamp(e,t,n){return e>n?n:e<t?t:e}function stripMnemonic(e){let t=[...e],n=``,r=0;for(;r<t.length;){if(t[r]!==`_`){n+=t[r],r+=1;continue}let e=t[r+1];if(e===void 0)return n;n+=e===`_`?`_`:e,r+=2}return n}export{gStrStrip,glibClamp,stringIsNotEmpty,stripMnemonic};
1
+ import"./_virtual/_rolldown/runtime.js";const e=/^[ \t\n\v\f\r]+|[ \t\n\v\f\r]+$/g;function gStrStrip(t){return t.replace(e,``)}function stringIsNotEmpty(e){return e!=null&&e.length>0}function gtkButtonIconNameReadback(e){return e===``?null:e}function adwSubtitleWriteNotifies(e,t){return t==null||t!==e}function glibClamp(e,t,n){return e>n?n:e<t?t:e}function stripMnemonic(e){let t=[...e],n=``,r=0;for(;r<t.length;){if(t[r]!==`_`){n+=t[r],r+=1;continue}let e=t[r+1];if(e===void 0)return n;n+=e===`_`?`_`:e,r+=2}return n}export{adwSubtitleWriteNotifies,gStrStrip,glibClamp,gtkButtonIconNameReadback,stringIsNotEmpty,stripMnemonic};
@@ -1 +1 @@
1
- import"./_virtual/_rolldown/runtime.js";const e=1,t=200,n=400,r=600,i=800,a=0,o=Object.freeze({KEY_space:32,KEY_a:97,KEY_d:100,KEY_e:101,KEY_q:113,KEY_s:115,KEY_w:119,KEY_Return:65293,KEY_Escape:65307,KEY_Left:65361,KEY_Up:65362,KEY_Right:65363,KEY_Down:65364}),s={" ":o.KEY_space,Enter:o.KEY_Return,Escape:o.KEY_Escape,ArrowLeft:o.KEY_Left,ArrowUp:o.KEY_Up,ArrowRight:o.KEY_Right,ArrowDown:o.KEY_Down};function keyvalOfKey(e){let t=s[e];if(t!==void 0)return t;let[n]=Array.from(e);if(n===void 0||e.length>2)return 0;let r=n.toLowerCase().codePointAt(0)??0;return r>=32&&r<=255?r:16777216+r}var CssProvider=class{#e=``;#t=null;load_from_string(e){this.#e=String(e),this.#t?.()}to_string(){return this.#e}static bind(e,t){e.#t=t}},StyleBook=class{#e;#t=[];constructor(e){this.#e=e}add(e,t){this.remove(e,!1),this.#t.push({provider:e,priority:t}),CssProvider.bind(e,()=>this.#n()),this.#n()}remove(e,t=!0){let n=this.#t.findIndex(t=>t.provider===e);n<0||(this.#t.splice(n,1),CssProvider.bind(e,null),t&&this.#n())}#n(){let e=this.#t.map((e,t)=>({entry:e,order:t})).sort((e,t)=>e.entry.priority-t.entry.priority||e.order-t.order);this.#e.setStyles(e.map(({entry:e})=>({owner:e.provider,css:e.provider.to_string(),priority:e.priority})))}},GtkSettings=class{#e;#t;constructor(e){this.#e=e}get gtk_font_name(){return this.#t===void 0?this.#e.fontName():this.#t}set gtk_font_name(e){this.#t=e}},IconTheme=class{#e=[`/org/gtk/libgtk/icons/`];#t=!1;#n=0;#r=!1;#i=new Map;#a=1;set_resource_path(e){this.#e=e===null?null:[...e],this.#t&&(this.#t=!1,this.#n++,this.#o())}add_resource_path(e){if(typeof e!=`string`)throw TypeError(`Gtk.IconTheme.add_resource_path: path must not be null`);this.set_resource_path([...this.#e??[],e])}get_resource_path(){return this.#e===null?null:[...this.#e]}connect(e,t){if(e!==`changed`)throw Error(`No signal '${e}' on object 'GtkIconTheme'`);let n=this.#a++;return this.#i.set(n,t),n}disconnect(e){if(!this.#i.delete(e))throw Error(`No handler with id ${e} is connected to ${String(this)}`)}#o(){this.#r||(this.#r=!0,setTimeout(()=>{this.#r=!1;for(let e of Array.from(this.#i.values()))e(this)},0))}static scan(e){return e.#t=!0,e.#n}},EventControllerKey=class{#e=new Map;#t=1;#n=null;connect(e,t){if(e!==`key-pressed`&&e!==`key-released`)throw Error(`No signal '${e}' on object 'GtkEventControllerKey'`);let n=this.#t++;return this.#e.set(n,{signal:e,handler:t}),n}disconnect(e){if(!this.#e.delete(e))throw Error(`No handler with id ${e} is connected to ${String(this)}`)}static attach(e,t){e.#n?.(),e.#n=t}static dispatch(e,t){let n=t.pressed?`key-pressed`:`key-released`,r=keyvalOfKey(t.key),i=!1;for(let{signal:a,handler:o}of Array.from(e.#e.values()))if(a===n&&o(e,r,t.keycode,t.state)===!0){i=!0;break}return i}};function createGtkPlatform(e){let t=new StyleBook(e),n=new GtkSettings(e),r=new IconTheme;return{CssProvider,StyleContext:{add_provider_for_display:(e,n,r)=>t.add(n,r),remove_provider_for_display:(e,n)=>t.remove(n)},Settings:{get_default:()=>n},IconTheme:{get_for_display:()=>r},EventControllerKey,show_uri:(t,n)=>e.openUri(n)}}function widgetControllerMembers(e){return{add_controller(t){EventControllerKey.attach(t,e.listenKeys(this,e=>EventControllerKey.dispatch(t,e)))},remove_controller(e){EventControllerKey.attach(e,null)}}}export{a as CURRENT_TIME,CssProvider,EventControllerKey,o as GDK_KEYS,GtkSettings,IconTheme,r as STYLE_PROVIDER_PRIORITY_APPLICATION,e as STYLE_PROVIDER_PRIORITY_FALLBACK,n as STYLE_PROVIDER_PRIORITY_SETTINGS,t as STYLE_PROVIDER_PRIORITY_THEME,i as STYLE_PROVIDER_PRIORITY_USER,createGtkPlatform,keyvalOfKey,widgetControllerMembers};
1
+ import"./_virtual/_rolldown/runtime.js";const e=1,t=200,n=400,r=600,i=800,a=0,o=Object.freeze({KEY_space:32,KEY_a:97,KEY_d:100,KEY_e:101,KEY_q:113,KEY_s:115,KEY_w:119,KEY_Return:65293,KEY_Escape:65307,KEY_Left:65361,KEY_Up:65362,KEY_Right:65363,KEY_Down:65364,KEY_Back:269025062}),s={" ":o.KEY_space,Enter:o.KEY_Return,Escape:o.KEY_Escape,ArrowLeft:o.KEY_Left,ArrowUp:o.KEY_Up,ArrowRight:o.KEY_Right,ArrowDown:o.KEY_Down,BrowserBack:o.KEY_Back};function keyvalOfKey(e){let t=s[e];if(t!==void 0)return t;let[n]=Array.from(e);if(n===void 0||e.length>2)return 0;let r=n.toLowerCase().codePointAt(0)??0;return r>=32&&r<=255?r:16777216+r}var CssProvider=class{#e=``;#t=null;load_from_string(e){this.#e=String(e),this.#t?.()}to_string(){return this.#e}static bind(e,t){e.#t=t}},StyleBook=class{#e;#t=[];constructor(e){this.#e=e}add(e,t){this.remove(e,!1),this.#t.push({provider:e,priority:t}),CssProvider.bind(e,()=>this.#n()),this.#n()}remove(e,t=!0){let n=this.#t.findIndex(t=>t.provider===e);n<0||(this.#t.splice(n,1),CssProvider.bind(e,null),t&&this.#n())}#n(){let e=this.#t.map((e,t)=>({entry:e,order:t})).sort((e,t)=>e.entry.priority-t.entry.priority||e.order-t.order);this.#e.setStyles(e.map(({entry:e})=>({owner:e.provider,css:e.provider.to_string(),priority:e.priority})))}},GtkSettings=class{#e;#t;constructor(e){this.#e=e}get gtk_font_name(){return this.#t===void 0?this.#e.fontName():this.#t}set gtk_font_name(e){this.#t=e}},IconTheme=class{#e=[`/org/gtk/libgtk/icons/`];#t=!1;#n=0;#r=!1;#i=new Map;#a=1;set_resource_path(e){this.#e=e===null?null:[...e],this.#t&&(this.#t=!1,this.#n++,this.#o())}add_resource_path(e){if(typeof e!=`string`)throw TypeError(`Gtk.IconTheme.add_resource_path: path must not be null`);this.set_resource_path([...this.#e??[],e])}get_resource_path(){return this.#e===null?null:[...this.#e]}connect(e,t){if(e!==`changed`)throw Error(`No signal '${e}' on object 'GtkIconTheme'`);let n=this.#a++;return this.#i.set(n,t),n}disconnect(e){if(!this.#i.delete(e))throw Error(`No handler with id ${e} is connected to ${String(this)}`)}#o(){this.#r||(this.#r=!0,setTimeout(()=>{this.#r=!1;for(let e of Array.from(this.#i.values()))e(this)},0))}static scan(e){return e.#t=!0,e.#n}},EventControllerKey=class{#e=new Map;#t=1;#n=null;connect(e,t){if(e!==`key-pressed`&&e!==`key-released`)throw Error(`No signal '${e}' on object 'GtkEventControllerKey'`);let n=this.#t++;return this.#e.set(n,{signal:e,handler:t}),n}disconnect(e){if(!this.#e.delete(e))throw Error(`No handler with id ${e} is connected to ${String(this)}`)}static attach(e,t){e.#n?.(),e.#n=t}static dispatch(e,t){let n=t.pressed?`key-pressed`:`key-released`,r=keyvalOfKey(t.key),i=!1;for(let{signal:a,handler:o}of Array.from(e.#e.values()))if(a===n&&o(e,r,t.keycode,t.state)===!0){i=!0;break}return i}};function createGtkPlatform(e){let t=new StyleBook(e),n=new GtkSettings(e),r=new IconTheme;return{CssProvider,StyleContext:{add_provider_for_display:(e,n,r)=>t.add(n,r),remove_provider_for_display:(e,n)=>t.remove(n)},Settings:{get_default:()=>n},IconTheme:{get_for_display:()=>r},EventControllerKey,show_uri:(t,n)=>e.openUri(n)}}const c=new WeakMap,l=new WeakMap;function forget(e){let t=l.get(e);t&&c.get(t)?.delete(e),l.delete(e)}function deliverKeyToControllers(e,t){for(let n of Array.from(c.get(e)??[]))if(EventControllerKey.dispatch(n,t))return!0;return!1}function widgetControllerMembers(e){return{add_controller(t){forget(t),EventControllerKey.attach(t,e.listenKeys(this,e=>EventControllerKey.dispatch(t,e)));let n=c.get(this);n||c.set(this,n=new Set),n.add(t),l.set(t,this)},remove_controller(e){forget(e),EventControllerKey.attach(e,null)}}}export{a as CURRENT_TIME,CssProvider,EventControllerKey,o as GDK_KEYS,GtkSettings,IconTheme,r as STYLE_PROVIDER_PRIORITY_APPLICATION,e as STYLE_PROVIDER_PRIORITY_FALLBACK,n as STYLE_PROVIDER_PRIORITY_SETTINGS,t as STYLE_PROVIDER_PRIORITY_THEME,i as STYLE_PROVIDER_PRIORITY_USER,createGtkPlatform,deliverKeyToControllers,keyvalOfKey,widgetControllerMembers};