Hi Carlos,
Thanks. I think what you are proposing is just a workaround. In real
application I don't have any width/height setup at all - there are only
container which has percentage width/height values. I made hack where I set
following in css:
.jewel.datagrid .listarea {
flex: 1 !important;
}
Above code fixed issue, but I bet someone pretty quick comes with the same
problem.
Thanks,
Piotr
wt., 17 mar 2020 o 16:13 Carlos Rovira <[email protected]> napisał(a):
> Hi Piotr,
>
> right now I can't update from github, but for what I can see you can solve
> that problem just adding height to the parent Card, as in examples 2 and 3
> in the the same page. I think Height is solved completely at DG level, just
> consider that making a component % percentage need to be based on parent
> know its height.
>
> Card is w and h 100% by default, but is configured in css, maybe I can add
> percentWidth=100 and percentHeight=100 in Card constructor by default?
>
>
>
>
>
>
> El mar., 17 mar. 2020 a las 13:31, Piotr Zarzycki (<
> [email protected]>) escribió:
>
> > Hi Carlos,
> >
> > I was able workaround all of the issue for DataGrid, so in my application
> > it seems to be working fine. There is nothing what I can commit in
> general,
> > however I run into one more issue. This is unfortunately seems to be real
> > stopper. When DataGrid has height="100%" or no height at all setup in
> > RELEASE build it shows only header, content is not visible. I have
> > committed example of such grid to TourDeJewel.
> >
> > Thanks,
> > Piotr
> >
> > niedz., 15 mar 2020 o 11:49 Piotr Zarzycki <[email protected]>
> > napisał(a):
> >
> > > Carlos,
> > >
> > > I don't want add anything and do not focus right now on what event are
> > > called or not. Just create locally custom layout [1], apply to DataGrid
> > in
> > > TourDeJewel example:
> > >
> > > .dataGridStyle {
> > > IBeadLayout: ClassReference("classes.beads.CustomDataGridLayout");
> > > }
> > >
> > >
> > > And debug layout method. - This method is broken. This is what I have
> in
> > > mind. - I don't care right now about those events personally - I can
> use
> > > this mockup Layout for now, but basic functionality in DataGrid simply
> > > doesn't work, so whole component to me is broken.
> > >
> > > [1] https://paste.apache.org/g95ae
> > >
> > > Thanks,
> > > Piotr
> > >
> > > niedz., 15 mar 2020 o 11:43 Carlos Rovira <[email protected]>
> > > napisał(a):
> > >
> > >> Hi Piotr,
> > >>
> > >> you mean add in line 73 of DataGridLayout.as (Jewel) the following?
> > >>
> > >> (_strand as IEventDispatcher).addEventListener("widthChanged",
> > >> sizeChangedNeeded);
> > >> (_strand as IEventDispatcher).addEventListener("heightChanged",
> > >> sizeChangedNeeded);
> > >>
> > >>
> > >> I think that's what Alex want to remove. The need to have 3 listeners.
> > >> Maybe I'm wrong and didn't understand right.
> > >> You can try to add those lines and if works commit. But maybe in some
> > days
> > >> that could be removed thanks to Alex changes
> > >>
> > >>
> > >>
> > >> El dom., 15 mar. 2020 a las 11:17, Piotr Zarzycki (<
> > >> [email protected]>) escribió:
> > >>
> > >> > Carlos,
> > >> >
> > >> > No problem. I suggest you to rather not wait but create custom
> > >> > DataGridLayout, listen to height/widthChanged and see what is happen
> > >> with
> > >> > calculating layout - this part is broken. The only think which you
> are
> > >> > waiting from Alex is size changing event system, but you don't have
> to
> > >> wait
> > >> > with fixing DataGrid itself.
> > >> >
> > >> > Thanks,
> > >> > Piotr
> > >> >
> > >> > niedz., 15 mar 2020 o 11:12 Carlos Rovira <[email protected]>
> > >> > napisał(a):
> > >> >
> > >> > > Hi Piotr,
> > >> > >
> > >> > > StyledUIBase override UIBase methods just to make use of NaN as a
> > >> valid
> > >> > > value to unset w or h heights.
> > >> > > Events should be the same as in UIBase. So I think we should wait
> > for
> > >> the
> > >> > > change Alex announce that is coming in the next days and work over
> > >> that.
> > >> > In
> > >> > > other case we can create code that will be useless as those
> changes
> > >> are
> > >> > > merged.
> > >> > >
> > >> > >
> > >> > > El dom., 15 mar. 2020 a las 10:55, Piotr Zarzycki (<
> > >> > > [email protected]>) escribió:
> > >> > >
> > >> > > > I have created custom layout which extends DataGridLayout. I
> have
> > >> added
> > >> > > > width/heightChanged event to listen but I still have 280px
> width.
> > It
> > >> > > turns
> > >> > > > out that this line is the reason [1]
> > >> > > >
> > >> > > > [1]
> > >> > > >
> > >> > > >
> > >> > >
> > >> >
> > >>
> >
> https://github.com/apache/royale-asjs/blob/ca5f6964866fcc5c5333d2444c572a5eff6f70fd/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as#L197
> > >> > > >
> > >> > > > Thanks,
> > >> > > > Piotr
> > >> > > >
> > >> > > > niedz., 15 mar 2020 o 10:42 Piotr Zarzycki <
> > >> [email protected]>
> > >> > > > napisał(a):
> > >> > > >
> > >> > > > > It's because when you setup width in StyledUIBase setWidth
> > >> dispatch
> > >> > > > > different event than sizeChanged [1]
> > >> > > > >
> > >> > > > > [1]
> > >> > > > >
> > >> > > >
> > >> > >
> > >> >
> > >>
> >
> https://github.com/apache/royale-asjs/blob/ca5f6964866fcc5c5333d2444c572a5eff6f70fd/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/StyledUIBase.as#L295
> > >> > > > >
> > >> > > > > niedz., 15 mar 2020 o 10:36 Piotr Zarzycki <
> > >> > [email protected]>
> > >> > > > > napisał(a):
> > >> > > > >
> > >> > > > >> Hi Carlos,
> > >> > > > >>
> > >> > > > >> I just tried your changes and it doesn't work. Handler of
> > >> > sizeChanged
> > >> > > > >> event has not been called at all. I have added another
> DataGrid
> > >> to
> > >> > > > >> TourDeJewel to show you described issue.
> > >> > > > >> What is weird to me that the result on the screen is same as
> in
> > >> my
> > >> > > > >> application, but I have a bit different outcome. I see in
> > >> > TourDeJewel
> > >> > > > >> DataGrid in Chrome console that width has been setup
> correctly
> > >> [1],
> > >> > > but
> > >> > > > in
> > >> > > > >> my application there is default width not those which I did
> set
> > >> [2]
> > >> > > > >>
> > >> > > > >> [1] https://ibb.co/QndjWW4
> > >> > > > >> [2] https://ibb.co/R0kCT7r
> > >> > > > >>
> > >> > > > >> Thanks,
> > >> > > > >> Piotr
> > >> > > > >>
> > >> > > > >> niedz., 15 mar 2020 o 01:01 Carlos Rovira <
> > >> [email protected]>
> > >> > > > >> napisał(a):
> > >> > > > >>
> > >> > > > >>> Hi Piotr,
> > >> > > > >>> just added. I must close for today. Let me know if that
> works
> > >> for
> > >> > > you,
> > >> > > > >>> tomorrow will see it.
> > >> > > > >>> Thanks
> > >> > > > >>>
> > >> > > > >>> El dom., 15 mar. 2020 a las 0:41, Piotr Zarzycki (<
> > >> > > > >>> [email protected]>)
> > >> > > > >>> escribió:
> > >> > > > >>>
> > >> > > > >>> > That's definitely solution for width="100%" is needed. Go
> > >> ahead
> > >> > and
> > >> > > > add
> > >> > > > >>> > event - I can try as soon as you add it.
> > >> > > > >>> >
> > >> > > > >>> > Thanks,
> > >> > > > >>> > Piotr
> > >> > > > >>> >
> > >> > > > >>> > On Sun, Mar 15, 2020, 12:30 AM Carlos Rovira <
> > >> > > > [email protected]>
> > >> > > > >>> > wrote:
> > >> > > > >>> >
> > >> > > > >>> > > Hi Piotr,
> > >> > > > >>> > >
> > >> > > > >>> > > I think you can workaround temporally but we need a
> > >> solution to
> > >> > > > work
> > >> > > > >>> > easily
> > >> > > > >>> > > with width="100%" at framework level. That's the reason
> > for
> > >> > > Royale
> > >> > > > or
> > >> > > > >>> > for a
> > >> > > > >>> > > framework.
> > >> > > > >>> > >
> > >> > > > >>> > > About the problem you're having is that I need to
> dispatch
> > >> > > > >>> "sizeChanged"
> > >> > > > >>> > > event. I'll try it to add soon so you can try it.
> > >> > > > >>> > >
> > >> > > > >>> > > Thanks
> > >> > > > >>> > >
> > >> > > > >>> > >
> > >> > > > >>> > >
> > >> > > > >>> > > El sáb., 14 mar. 2020 a las 17:13, Piotr Zarzycki (<
> > >> > > > >>> > > [email protected]>) escribió:
> > >> > > > >>> > >
> > >> > > > >>> > > > Carlos,
> > >> > > > >>> > > >
> > >> > > > >>> > > > If solution to my case is setup width - I may figure
> out
> > >> > > somehow
> > >> > > > >>> how to
> > >> > > > >>> > > get
> > >> > > > >>> > > > width of the parent container and setup it to the
> grid -
> > >> > > > >>> workaround for
> > >> > > > >>> > > now
> > >> > > > >>> > > > - However it doesn't actually work in a way that I
> would
> > >> be
> > >> > > able
> > >> > > > to
> > >> > > > >>> > apply
> > >> > > > >>> > > > that workaround.
> > >> > > > >>> > > >
> > >> > > > >>> > > > In the other words if I have below situation - My grid
> > is
> > >> > > working
> > >> > > > >>> > > properly
> > >> > > > >>> > > > along with columnWidth.
> > >> > > > >>> > > >
> > >> > > > >>> > > > <j:VGroup>
> > >> > > > >>> > > > <j:DataGrid id="listEmails" width="500"
> > >> > dataProvider={dp}
> > >> > > />
> > >> > > > >>> > > > </j:VGroup>
> > >> > > > >>> > > >
> > >> > > > >>> > > > However if I have following code it doesn't work but
> it
> > >> > > actually
> > >> > > > >>> > should!
> > >> > > > >>> > > >
> > >> > > > >>> > > > <j:VGroup initComplete="onInit(event)">
> > >> > > > >>> > > > <j:DataGrid id="listEmails" dataProvider={dp} />
> > >> > > > >>> > > > </j:VGroup>
> > >> > > > >>> > > >
> > >> > > > >>> > > > private function onInit (event:Event):void
> > >> > > > >>> > > > {
> > >> > > > >>> > > > this.listEmails.width = 500;
> > >> > > > >>> > > > }
> > >> > > > >>> > > >
> > >> > > > >>> > > > Thanks,
> > >> > > > >>> > > > Piotr
> > >> > > > >>> > > >
> > >> > > > >>> > > >
> > >> > > > >>> > > >
> > >> > > > >>> > > > pt., 13 mar 2020 o 15:18 Piotr Zarzycki <
> > >> > > > [email protected]
> > >> > > > >>> >
> > >> > > > >>> > > > napisał(a):
> > >> > > > >>> > > >
> > >> > > > >>> > > > > Hi Carlos,
> > >> > > > >>> > > > >
> > >> > > > >>> > > > > I just checked your improvements and those one with
> > >> > > columnWidth
> > >> > > > >>> > doesn't
> > >> > > > >>> > > > > work as it should in our use case. I just committed
> > >> > > additional
> > >> > > > >>> > example
> > >> > > > >>> > > in
> > >> > > > >>> > > > > TourDeJewel which shows that case. Take a look how
> > >> DataGrid
> > >> > > > look
> > >> > > > >>> like
> > >> > > > >>> > > in
> > >> > > > >>> > > > > that example.
> > >> > > > >>> > > > >
> > >> > > > >>> > > > > Thanks,
> > >> > > > >>> > > > > Piotr
> > >> > > > >>> > > > >
> > >> > > > >>> > > > > pon., 9 mar 2020 o 16:42 Carlos Rovira <
> > >> > > > [email protected]>
> > >> > > > >>> > > > > napisał(a):
> > >> > > > >>> > > > >
> > >> > > > >>> > > > >> Hi Piotr,
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> DataGrid now has 3 improvements:
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> - No default width or height
> > >> > > > >>> > > > >> - width and height can be not set or set to
> pixels
> > >> or
> > >> > %
> > >> > > > >>> values
> > >> > > > >>> > > > >> - columnWidths can be no set at all, set all or
> > just
> > >> > some
> > >> > > > to
> > >> > > > >>> > pixels
> > >> > > > >>> > > > (I
> > >> > > > >>> > > > >> didn't loo
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> Notice that, we don't support % in columns since
> > >> there's
> > >> > no
> > >> > > > way
> > >> > > > >>> to
> > >> > > > >>> > set
> > >> > > > >>> > > > >> columns to percentages. We want to support it?.
> Maybe
> > >> we
> > >> > can
> > >> > > > >>> > introduce
> > >> > > > >>> > > > >> "columnPercentWidth" ? Not sure about this
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> I'll take a look at the initializer problem with
> > Lists
> > >> and
> > >> > > > Dgs.
> > >> > > > >>> > > > Regarding
> > >> > > > >>> > > > >> this, what's the use case or why you want to change
> > the
> > >> > > > >>> initializer?
> > >> > > > >>> > > > >> having
> > >> > > > >>> > > > >> some kind of example will help me with this, since
> > >> right
> > >> > now
> > >> > > > >>> don't
> > >> > > > >>> > > know
> > >> > > > >>> > > > so
> > >> > > > >>> > > > >> much about it.
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> Thanks
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> Carlos
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> El vie., 6 mar. 2020 a las 17:32, Carlos Rovira (<
> > >> > > > >>> > > > [email protected]
> > >> > > > >>> > > > >> >)
> > >> > > > >>> > > > >> escribió:
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> > I'm thinking that the last problem need a
> solution
> > >> like
> > >> > > the
> > >> > > > >>> one in
> > >> > > > >>> > > > >> > ComboBox with passing the IR class to the
> internal
> > >> List.
> > >> > > > >>> > > > >> > (Although some issue is still in the mapper
> > >> > > infrastructure,
> > >> > > > >>> but I
> > >> > > > >>> > > > think
> > >> > > > >>> > > > >> is
> > >> > > > >>> > > > >> > separated issue).
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >> > El vie., 6 mar. 2020 a las 17:24, Piotr Zarzycki
> (<
> > >> > > > >>> > > > >> > [email protected]>) escribió:
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >> >> Both issues with width/height and this one block
> > >> > > migration
> > >> > > > >>> for
> > >> > > > >>> > now
> > >> > > > >>> > > in
> > >> > > > >>> > > > >> our
> > >> > > > >>> > > > >> >> application from Table to DataGrid. I would be
> the
> > >> > first
> > >> > > > one
> > >> > > > >>> who
> > >> > > > >>> > > test
> > >> > > > >>> > > > >> it
> > >> > > > >>> > > > >> >> for sure when you find cause of that issue and
> fix
> > >> it.
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >> Thanks for that update,
> > >> > > > >>> > > > >> >> Piotr
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >> pt., 6 mar 2020 o 17:17 Carlos Rovira <
> > >> > > > >>> [email protected]>
> > >> > > > >>> > > > >> >> napisał(a):
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >> > Hi Piotr,
> > >> > > > >>> > > > >> >> >
> > >> > > > >>> > > > >> >> > yesterday I saw a strange behaviour with
> > controls
> > >> > that
> > >> > > > >>> compose
> > >> > > > >>> > > list
> > >> > > > >>> > > > >> and
> > >> > > > >>> > > > >> >> > Item renderer changes done recently, but was
> in
> > >> > > ComboBox
> > >> > > > >>> that
> > >> > > > >>> > can
> > >> > > > >>> > > > >> >> configure
> > >> > > > >>> > > > >> >> > an Item renderer and then pass to the
> > >> ComboBoxPopUp
> > >> > to
> > >> > > > its
> > >> > > > >>> List
> > >> > > > >>> > > > >> internal
> > >> > > > >>> > > > >> >> > component (so we can have custom renderers in
> > >> > > ComboBox).
> > >> > > > In
> > >> > > > >>> > this
> > >> > > > >>> > > > case
> > >> > > > >>> > > > >> >> > rowCount and rowHeight is not working as
> > expected,
> > >> > sin
> > >> > > ce
> > >> > > > >>> there
> > >> > > > >>> > > > >> >> initializer
> > >> > > > >>> > > > >> >> > is not used in ComboBox internal list, while
> in
> > >> > > > >>> VirtualComboBox
> > >> > > > >>> > > is
> > >> > > > >>> > > > >> >> working
> > >> > > > >>> > > > >> >> > ok.
> > >> > > > >>> > > > >> >> > I trace the problem to Mappers not update
> right
> > >> when
> > >> > > the
> > >> > > > >>> > > renderers
> > >> > > > >>> > > > >> >> refactor
> > >> > > > >>> > > > >> >> > was done. So while the mapper in Basic adds
> > >> > > initializer,
> > >> > > > in
> > >> > > > >>> > Jewel
> > >> > > > >>> > > > is
> > >> > > > >>> > > > >> not
> > >> > > > >>> > > > >> >> > doing that. I could not invest more time
> since I
> > >> was
> > >> > in
> > >> > > > the
> > >> > > > >>> > > middle
> > >> > > > >>> > > > of
> > >> > > > >>> > > > >> >> other
> > >> > > > >>> > > > >> >> > fixes, and still had the width/height issues
> in
> > >> DG,
> > >> > so
> > >> > > > >>> could
> > >> > > > >>> > not
> > >> > > > >>> > > > see
> > >> > > > >>> > > > >> >> > exactly what's the problem.
> > >> > > > >>> > > > >> >> > I want to see if now that this refactor is
> done
> > is
> > >> > safe
> > >> > > > to
> > >> > > > >>> > remove
> > >> > > > >>> > > > >> jewel
> > >> > > > >>> > > > >> >> > mappers to user basic versions, but a quick
> test
> > >> > reveal
> > >> > > > >>> that is
> > >> > > > >>> > > not
> > >> > > > >>> > > > >> >> direct.
> > >> > > > >>> > > > >> >> > In resume, about your problem, I think it
> could
> > be
> > >> > > > >>> something
> > >> > > > >>> > like
> > >> > > > >>> > > > the
> > >> > > > >>> > > > >> >> one
> > >> > > > >>> > > > >> >> > with ComboBox, but need to have the time to
> > reach
> > >> to
> > >> > > that
> > >> > > > >>> > point,
> > >> > > > >>> > > > >> >> hopefully
> > >> > > > >>> > > > >> >> > soon.
> > >> > > > >>> > > > >> >> > Thanks
> > >> > > > >>> > > > >> >> >
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >> --
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >> Piotr Zarzycki
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >> Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > > > >>> > > > >> >> <https://www.patreon.com/piotrzarzycki>*
> > >> > > > >>> > > > >> >>
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >> > --
> > >> > > > >>> > > > >> > Carlos Rovira
> > >> > > > >>> > > > >> > http://about.me/carlosrovira
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >> >
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >> --
> > >> > > > >>> > > > >> Carlos Rovira
> > >> > > > >>> > > > >> http://about.me/carlosrovira
> > >> > > > >>> > > > >>
> > >> > > > >>> > > > >
> > >> > > > >>> > > > >
> > >> > > > >>> > > > > --
> > >> > > > >>> > > > >
> > >> > > > >>> > > > > Piotr Zarzycki
> > >> > > > >>> > > > >
> > >> > > > >>> > > > > Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > > > >>> > > > > <https://www.patreon.com/piotrzarzycki>*
> > >> > > > >>> > > > >
> > >> > > > >>> > > >
> > >> > > > >>> > > >
> > >> > > > >>> > > > --
> > >> > > > >>> > > >
> > >> > > > >>> > > > Piotr Zarzycki
> > >> > > > >>> > > >
> > >> > > > >>> > > > Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > > > >>> > > > <https://www.patreon.com/piotrzarzycki>*
> > >> > > > >>> > > >
> > >> > > > >>> > >
> > >> > > > >>> > >
> > >> > > > >>> > > --
> > >> > > > >>> > > Carlos Rovira
> > >> > > > >>> > > http://about.me/carlosrovira
> > >> > > > >>> > >
> > >> > > > >>> >
> > >> > > > >>>
> > >> > > > >>>
> > >> > > > >>> --
> > >> > > > >>> Carlos Rovira
> > >> > > > >>> http://about.me/carlosrovira
> > >> > > > >>>
> > >> > > > >>
> > >> > > > >>
> > >> > > > >> --
> > >> > > > >>
> > >> > > > >> Piotr Zarzycki
> > >> > > > >>
> > >> > > > >> Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > > > >> <https://www.patreon.com/piotrzarzycki>*
> > >> > > > >>
> > >> > > > >
> > >> > > > >
> > >> > > > > --
> > >> > > > >
> > >> > > > > Piotr Zarzycki
> > >> > > > >
> > >> > > > > Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > > > > <https://www.patreon.com/piotrzarzycki>*
> > >> > > > >
> > >> > > >
> > >> > > >
> > >> > > > --
> > >> > > >
> > >> > > > Piotr Zarzycki
> > >> > > >
> > >> > > > Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > > > <https://www.patreon.com/piotrzarzycki>*
> > >> > > >
> > >> > >
> > >> > >
> > >> > > --
> > >> > > Carlos Rovira
> > >> > > http://about.me/carlosrovira
> > >> > >
> > >> >
> > >> >
> > >> > --
> > >> >
> > >> > Piotr Zarzycki
> > >> >
> > >> > Patreon: *https://www.patreon.com/piotrzarzycki
> > >> > <https://www.patreon.com/piotrzarzycki>*
> > >> >
> > >>
> > >>
> > >> --
> > >> Carlos Rovira
> > >> http://about.me/carlosrovira
> > >>
> > >
> > >
> > > --
> > >
> > > Piotr Zarzycki
> > >
> > > Patreon: *https://www.patreon.com/piotrzarzycki
> > > <https://www.patreon.com/piotrzarzycki>*
> > >
> >
> >
> > --
> >
> > Piotr Zarzycki
> >
> > Patreon: *https://www.patreon.com/piotrzarzycki
> > <https://www.patreon.com/piotrzarzycki>*
> >
>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>
--
Piotr Zarzycki
Patreon: *https://www.patreon.com/piotrzarzycki
<https://www.patreon.com/piotrzarzycki>*