FWIW, I built TDJ locally on Feb 19 when I pushed the has branch.  If I go to 
the ComboBox there is a demo with sliders and the sliders work for me.  Is that 
ComboBox virtual or no?

-Alex
On 3/9/20, 4:54 PM, "Carlos Rovira" <[email protected]> wrote:

    Hi Alex,
    
    in Jewel ComboBox something is not working as expected for ItemRenderers,
    while in VirtualComboBox is working right. I mean rowCount/rowHeight.
    If you check ComboBoxPlayGround in TDJ for an example where those
    properties are set (the one with HSliders), you'll see those properties are
    not causing effect. Instead in the VirtualPlayGround a similar
    VirtualComboBox is configured with that properties and works ok.
    
    I think the problem is in the mapper for List, that is different from
    Basic. I can investigate if is a good time to remove jewel mappers now that
    renderers are more modular, but I'll need a bit of documentation, since I'm
    digging though all the code and is a bit cumbersome to imagine what's all
    about.
    
    So could you add some docs to the Itemrenderer royale doc page [1]? I think
    it will be of help to me, and others here, and for users too.
    
    Thanks in advance
    
    Carlos
    
    [1] 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapache.github.io%2Froyale-docs%2Ffeatures%2Fitem-renderers&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=j9LG%2FW3EhKlHeWgMr%2FRcfkKFind4I1o3pnu2kGnFVGY%3D&amp;reserved=0
    
    
    El lun., 2 mar. 2020 a las 9:28, Alex Harui (<[email protected]>)
    escribió:
    
    >
    >
    > On 3/1/20, 11:54 PM, "Harbs" <[email protected]> wrote:
    >
    >     Sure. I think separating Selection from the Renderer was the right
    > thing to do, but we also need to figure out how to make it do the “right
    > thing” be default.
    >
    >     I’m wondering if there should be a “selectionBead” property in every
    > item renderer which could be null.
    >
    >     Maybe DataContainerBase should accept a selectionRenderer property the
    > same way it accepts an itemRenderer?
    >
    >
    > I don't know what your scenario really is, so don't have an opinion.  The
    > SelectableItemRendererClassFactory could look on the List's Strand for an
    > instance of a bead that it can use instead of getting the class reference
    > from CSS.  It depends on where you want to control the configuration and
    > why.  I'm not sure there will be "one way".
    >
    > An item renderer should probably only have a selectionBead settable
    > property if you can assign different selection beads per renderer, not per
    > list, which is probably renderer-specific and not something for the base
    > classes.
    >
    > FWIW, DataContainerBase isn't intended to support selection, it is just
    > supposed to crank out a bunch of children for a container.  The Lists are
    > generally where selection becomes optional/required.
    >
    > -Alex
    >
    >
    >     > On Mar 2, 2020, at 9:47 AM, Alex Harui <[email protected]>
    > wrote:
    >     >
    >     > More loosely-coupled pieces often results in head-scratching.  But
    > it also results in PAYG and flexibility.
    >     >
    >     > Our job is to find the common patterns, and pre-compose as needed,
    > such as the Express component set.  This "has" pattern is a new pattern so
    > we'll have to figure out new best practices.  And there are probably more
    > than one.  You might want to override what Selection bead is used
    >     >
    >     > 1) from some List-level config/attribute/css
    >     > 2) in the renderer itself
    >     > 3) by some renderer-level config/attribute/css
    >     >
    >     > IMO, it depends on where you want to control the composition.
    >     >
    >     > My 2 cents,
    >     > -Alex
    >     >
    >     > On 3/1/20, 11:36 PM, "Harbs" <[email protected]> wrote:
    >     >
    >     >    Yes. If I replace the default SelectableItemRendererClassFactory
    >     >
    >     >    My work-around was to use:
    >     >
    >     >    js|List{
    >     >           IItemRendererClassFactory:
    > 
ClassReference("org.apache.royale.core.OverridableSelectableItemRendererClassFactory");
    >     >    }
    >     >
    >     >    The average user will be scratching their heads on how to solve
    > this problem.
    >     >
    >     >> On Mar 2, 2020, at 1:19 AM, Alex Harui <[email protected]>
    > wrote:
    >     >>
    >     >>
    >     >>
    >     >> On 3/1/20, 12:33 AM, "Harbs" <[email protected] <mailto:
    > [email protected]>> wrote:
    >     >>
    >     >>   I’ve also discovered that setting the selection bead is more
    > difficult than I would hope it to be.
    >     >>
    >     >>   For example there should be an easy way to specify the selection
    > bead in a situation like this:
    >     >>
    >     >> I may not be understanding the problem.  The SpreadIconRenderer
    > could have the SelectionBead in its bead list.
    >     >>
    >     >> -Alex
    >     >>
    >     >>   <js:List
    >     >>
    > itemRenderer="com.printui.view.renderers.SpreadIconRenderer"
    >     >>          height="100%" width="100%"
    >     >>          >
    >     >>          <js:beads>
    >     >>                  <js:ArrayListSelectionModel/>
    >     >>                  <js:DataItemRendererFactoryForArrayList/>
    >     >>                  <js:EasyDataProviderChangeNotifier/>
    >     >>                  <js:VScrollViewport id="scrollView"/>
    >     >>          </js:beads>
    >     >>
    >     >>   </js:List>
    >     >>
    >     >>> On Mar 1, 2020, at 1:43 AM, Alex Harui <[email protected]>
    > wrote:
    >     >>>
    >     >>> I've tried two different patterns:
    >     >>>
    >     >>> 1) ItemRendererOwnerVIew via "has":  See
    > Core/src/main/royale/org/apache/royale/core/ItemRendererOwnerViewBead.as.
    > Then the ItemRendererClassFactory or the initializer can set it
    >     >>>
    >     >>> 2) Baking it in where needed and implementing
    > IItemRendererOwnerView and setting it in the initializer.
    >     >>>
    >     >>> The main "benefit" of this part of the refactor is that not all
    > item renderers need to be assigned a host since many don't need it, so it
    > is PAYG for those who do.  The advantage of the "has" approach is that
    > custom item renderers don't add an itemRendererOwnerView property, but if
    > the component doesn't allow custom item renderers, might be simpler to use
    > approach #2.
    >     >>>
    >     >>> HTH,
    >     >>> -Alex
    >     >>>
    >     >>> On 2/29/20, 12:17 PM, "Harbs" <[email protected]> wrote:
    >     >>>
    >     >>>  What’s the recommended pattern for getting the “data host” from
    > an itemRenderer now that itemRendererParent/itemRendererOwnerView is no
    > longer a “thing”?
    >     >>>
    >     >>>  I have the following code in an itemRenderer which inherits from
    > DataItemRenderer:
    >     >>>
    >     >>>  (itemRendererParent.host.parent as
    > PagePalette).showMenuHandler(myValueEvent);
    >     >>>
    >     >>>> On Feb 24, 2020, at 7:02 PM, Alex Harui 
<[email protected]>
    > wrote:
    >     >>>>
    >     >>>> It seemed like a separate concern.  Right now there are two
    > highly used ItemRendererClassFactory, but several Initializers.
    >     >>>>
    >     >>>> -Alex
    >     >>>>
    >     >>>> On 2/24/20, 3:06 AM, "Harbs" <[email protected] <mailto:
    > [email protected]>> wrote:
    >     >>>>
    >     >>>> Why is IItemRendererInitializer separate from
    > IItemRendererClassFactory?
    >     >>>>
    >     >>>>> On Feb 21, 2020, at 12:03 AM, Alex Harui
    > <[email protected]> wrote:
    >     >>>>>
    >     >>>>> I pushed changes that I think has everything working in Jewel by
    > using the same "has" pattern that is used in other component sets.
    >     >>>>>
    >     >>>>> The Lists in the ToDo examples use a regular
    > ItemRendererClassFactory instead of SelectableItemRendererClassFactory 
that
    > is now used in most other places (List/DataGrid/Table)
    >     >>>>>
    >     >>>>> The recommended pattern for disabling selection in a list is
    > whether you choose a ClassFactory that attaches a Selection Bead to each
    > renderer.  There was an exception to that rule in one of the Table 
examples
    > because it wanted only certain renderers to not have selection. I added a
    > bead that turns off the selection for that case.  IMO, how to deal with
    > such an exception will be based more on what percentage of the renderers
    > need selection.  If most do, then add a Selection Bead to all renderers 
but
    > disable selection where you don't want it.  If most do not want selection,
    > then add the bead where you need it.
    >     >>>>>
    >     >>>>> Thanks,
    >     >>>>> -Alex
    >     >>>>>
    >     >>>>> On 2/20/20, 11:28 AM, "Carlos Rovira" <[email protected]
    > <mailto:[email protected]> <mailto:[email protected] <mailto:
    > [email protected]>>> wrote:
    >     >>>>>
    >     >>>>> yes, Jewel has the "structure" and is organized in SASS files,
    > then
    >     >>>>> JewelTheme has the "styling" part and is as well SASS.
    >     >>>>> so Jewel should not need to change, and people should only need
    > to change
    >     >>>>> JewelTheme or create a new theme one using it as a template.
    >     >>>>>
    >     >>>>> I'll add examples to ant tomorrow
    >     >>>>>
    >     >>>>> thanks
    >     >>>>>
    >     >>>>>
    >     >>>>> El jue., 20 feb. 2020 a las 20:17, Alex Harui
    > (<[email protected] <mailto:[email protected]>>)
    >     >>>>> escribió:
    >     >>>>>
    >     >>>>>>
    >     >>>>>>
    >     >>>>>> On 2/20/20, 11:04 AM, "Carlos Rovira" <[email protected]
    > <mailto:[email protected]>> wrote:
    >     >>>>>>
    >     >>>>>> forgot to say. Can you add missing examples to ANT? don't know
    > where
    >     >>>>>> to do
    >     >>>>>> that
    >     >>>>>> and checking Jewel don't see the use of
    >     >>>>>> SelectableItemRendererClassFactory.
    >     >>>>>> all times ItemRendererClassFactory is used
    >     >>>>>>
    >     >>>>>> I could fix the Ant side, but I don't have time.  It think all
    > you need to
    >     >>>>>> do is add it to the examples/build.xml
    >     >>>>>>
    >     >>>>>> I didn't use SelectableItemRendererClassFactory in Jewel
    > because I wasn't
    >     >>>>>> sure if the selection was supposed to be changeable at
    > runtime.  I think
    >     >>>>>> you've confirmed that it isn't so we can change to use
    >     >>>>>> SelectableItemRendererClassFactory
    >     >>>>>>
    >     >>>>>> I knew the themes were generated by SASS, but I didn't realize
    > the Jewel
    >     >>>>>> one was as well.
    >     >>>>>>
    >     >>>>>> -Alex
    >     >>>>>>
    >     >>>>>> El jue., 20 feb. 2020 a las 20:00, Carlos Rovira (<
    >     >>>>>> [email protected] <mailto:[email protected]>>)
    >     >>>>>> escribió:
    >     >>>>>>
    >     >>>>>>> Hi Alex,
    >     >>>>>>>
    >     >>>>>>> remember that Jewel uses SASS to create the CSS. I already
    > pushed a
    >     >>>>>> commit
    >     >>>>>>> with ["warning"]. It's not the first time I warn about it ;)
    >     >>>>>>> You must to change SASS file. The css is just generated (like
    > other
    >     >>>>>>> generations in compiler), and is committed since no body added
    > SASS
    >     >>>>>> to ANT.
    >     >>>>>>> Maven has a sass plugin to compile SASS.
    >     >>>>>>>
    >     >>>>>>> I saw you response and commented there
    >     >>>>>>>
    >     >>>>>>> Thanks
    >     >>>>>>>
    >     >>>>>>> Carlos
    >     >>>>>>>
    >     >>>>>>>
    >     >>>>>>> El jue., 20 feb. 2020 a las 19:55, Alex Harui
    >     >>>>>> (<[email protected] <mailto:[email protected]>>)
    >     >>>>>>> escribió:
    >     >>>>>>>
    >     >>>>>>>> I replied on this topic on your commit email.
    >     >>>>>>>>
    >     >>>>>>>> So I don't have to copy that into this thread, read what I
    > said in
    >     >>>>>> that
    >     >>>>>>>> email and reply on that thread and let's figure out the right
    > thing
    >     >>>>>> to do.
    >     >>>>>>>> I am having some weird problem with my Maven build where
    > every time
    >     >>>>>> I try
    >     >>>>>>>> to change Jewel's defaults.css something overwrites it.  I'm
    > trying
    >     >>>>>> to
    >     >>>>>>>> figure out what is going on there.
    >     >>>>>>>>
    >     >>>>>>>> -Alex
    >     >>>>>>>>
    >     >>>>>>>> On 2/20/20, 10:47 AM, "Carlos Rovira" <
    > [email protected] <mailto:[email protected]>>
    >     >>>>>> wrote:
    >     >>>>>>>>
    >     >>>>>>>> Hi Alex,
    >     >>>>>>>>
    >     >>>>>>>> I found that TodoMVC examples was not working, so I fixed it
    >     >>>>>> removing
    >     >>>>>>>> the
    >     >>>>>>>> non existing properties (hoverable and selectable).
    >     >>>>>>>> But I found Jewel ListItemRenderer has all baked, so I
    > created a
    >     >>>>>>>> SimpleListItemRenderer (in Jewel Simple in the normal prefix
    >     >>>>>> for a
    >     >>>>>>>> "base",
    >     >>>>>>>> "basic" or "simple" option) that hast the minimum required.
    >     >>>>>>>>
    >     >>>>>>>> So at least in Jewel if people wants hoverable and selectable
    >     >>>>>>>> renderers use
    >     >>>>>>>> the normal ListItemRenderer.
    >     >>>>>>>> If don't want that indicators, use SimpleListItemRenderer. If
    >     >>>>>> you
    >     >>>>>>>> want just
    >     >>>>>>>> show hover, but not selected state, then extend Simple 
version
    >     >>>>>> and
    >     >>>>>>>> add "
    >     >>>>>>>> ClassSelectorListRuntimeSelectableItemRendererBead" and
    >     >>>>>> configure to
    >     >>>>>>>> have
    >     >>>>>>>> just "hoverable" to true ¿ok?
    >     >>>>>>>>
    >     >>>>>>>> Hope I understand ok how it works. Let me know if something 
is
    >     >>>>>> not as
    >     >>>>>>>> expected.
    >     >>>>>>>>
    >     >>>>>>>> Thanks
    >     >>>>>>>>
    >     >>>>>>>> Carlos
    >     >>>>>>>>
    >     >>>>>>>>
    >     >>>>>>>>
    >     >>>>>>>> El jue., 20 feb. 2020 a las 18:06, Alex Harui
    >     >>>>>>>> (<[email protected] <mailto:[email protected]
    > >>)
    >     >>>>>>>> escribió:
    >     >>>>>>>>
    >     >>>>>>>>> I'm not sure I understand what you mean by "control".
    >     >>>>>>>>>
    >     >>>>>>>>> Before the "has" changes, every ItemRenderer contained or
    >     >>>>>> inherited
    >     >>>>>>>> code
    >     >>>>>>>>> that had hovered/selected APIs that drew visuals, and the
    >     >>>>>>>> ItemRenderer also
    >     >>>>>>>>> "had" a bead like ItemRendererMouseController that set the
    >     >>>>>> hovered
    >     >>>>>>>> property
    >     >>>>>>>>> on that item renderer, and the List's controller would set
    > the
    >     >>>>>>>> selected
    >     >>>>>>>>> property.
    >     >>>>>>>>>
    >     >>>>>>>>> Now, every ItemRenderer "has" a bead that has the
    >     >>>>>> hovered/selected
    >     >>>>>>>>> properties, and the ItemRendererMouseController and the
    >     >>>>>> Lists's
    >     >>>>>>>> controllers
    >     >>>>>>>>> get that bead instead of talking to the ItemRenderer
    >     >>>>>> directly.  I
    >     >>>>>>>> guess
    >     >>>>>>>>> that's the new way of thinking for has/composition vs
    >     >>>>>>>> is/inheritance:  a
    >     >>>>>>>>> component doesn't have to have all of its APIs glued to its
    >     >>>>>> API
    >     >>>>>>>> surface.
    >     >>>>>>>>> We mainly do that for convenience in MXML, but for more
    >     >>>>>> internal
    >     >>>>>>>> stuff like
    >     >>>>>>>>> this, loose-coupling via has/composition shared more code 
and
    >     >>>>>>>> increases
    >     >>>>>>>>> configurability, but does add some runtime overhead in its
    >     >>>>>> raw form.
    >     >>>>>>>>> Hopefully we can optimize that away.
    >     >>>>>>>>>
    >     >>>>>>>>> HTH,
    >     >>>>>>>>> -Alex
    >     >>>>>>>>>
    >     >>>>>>>>> On 2/20/20, 5:01 AM, "Piotr Zarzycki" <
    >     >>>>>> [email protected] <mailto:[email protected]>>
    >     >>>>>>>> wrote:
    >     >>>>>>>>>
    >     >>>>>>>>> Hi Alex,
    >     >>>>>>>>>
    >     >>>>>>>>> Could you provide an example how would I control
    >     >>>>>>>> hovering/selecting in
    >     >>>>>>>>> item
    >     >>>>>>>>> renderer when I don't have build in hover property etc. ?
    >     >>>>>> How
    >     >>>>>>>> should I
    >     >>>>>>>>> compose such item renderer ?
    >     >>>>>>>>>
    >     >>>>>>>>> Thanks,
    >     >>>>>>>>> Piotr
    >     >>>>>>>>>
    >     >>>>>>>>> czw., 20 lut 2020 o 03:20 Alex Harui
    >     >>>>>> <[email protected] <mailto:[email protected]>>
    >     >>>>>>>>> napisał(a):
    >     >>>>>>>>>
    >     >>>>>>>>>> I pushed the "has" changes.  TourDeJewel seems to be
    >     >>>>>> working
    >     >>>>>>>>> correctly for
    >     >>>>>>>>>> me.
    >     >>>>>>>>>>
    >     >>>>>>>>>> The principle of "has" is similar to inheritance vs
    >     >>>>>>>> composition.
    >     >>>>>>>>> Just
    >     >>>>>>>>>> like top-level components like List are composed of many
    >     >>>>>>>> beads, the
    >     >>>>>>>>> item
    >     >>>>>>>>>> renderers are now composed of more beads as well.  That
    >     >>>>>>>> reduces the
    >     >>>>>>>>>> requirement to add code to a class in order to "be/is"
    >     >>>>>>>> something.
    >     >>>>>>>>>>
    >     >>>>>>>>>> There used to be copies of code that drew hover and
    >     >>>>>> selected
    >     >>>>>>>> states
    >     >>>>>>>>> on
    >     >>>>>>>>>> the item renderers in each new kind of item renderer
    >     >>>>>> that
    >     >>>>>>>> couldn't
    >     >>>>>>>>> inherit
    >     >>>>>>>>>> from an item renderer that could draw selected and
    >     >>>>>> hovered
    >     >>>>>>>> states.
    >     >>>>>>>>> Now,
    >     >>>>>>>>>> the itemrenderers compose their selection visuals.   A
    >     >>>>>> single
    >     >>>>>>>> item
    >     >>>>>>>>> renderer
    >     >>>>>>>>>> like StringItemRenderer can be composed with no
    >     >>>>>> selection
    >     >>>>>>>> drawing at
    >     >>>>>>>>> all,
    >     >>>>>>>>>> or with solid color selection drawing or with alternate
    >     >>>>>> color
    >     >>>>>>>>> selection
    >     >>>>>>>>>> drawing or something new.    And that means that some
    >     >>>>>> new
    >     >>>>>>>> kind of
    >     >>>>>>>>> item
    >     >>>>>>>>>> renderer, like a TextInput can become an item renderer
    >     >>>>>> more
    >     >>>>>>>> easily,
    >     >>>>>>>>> by
    >     >>>>>>>>>> composing a selection visuals bead instead of having to
    >     >>>>>> add
    >     >>>>>>>> all of
    >     >>>>>>>>> that
    >     >>>>>>>>>> code.
    >     >>>>>>>>>>
    >     >>>>>>>>>> Another place I started using "has" but didn't fully
    >     >>>>>> replace
    >     >>>>>>>> the old
    >     >>>>>>>>> code
    >     >>>>>>>>>> was in handling itemRendererParent, which is now called
    >     >>>>>>>>>> itemRendererOwnerView (to try to make it more clear
    >     >>>>>> that isn't
    >     >>>>>>>>> always the
    >     >>>>>>>>>> parent of the item renderer and is sometimes an internal
    >     >>>>>>>>>> datagroup/container).  Turns out a lot of our renderers
    >     >>>>>>>> didn't need
    >     >>>>>>>>> to know
    >     >>>>>>>>>> the itemRendererParent, so in many cases we no longer
    >     >>>>>> figure
    >     >>>>>>>> it out
    >     >>>>>>>>> and
    >     >>>>>>>>>> assign it.  But in cases where it is needed, the
    >     >>>>>> property is
    >     >>>>>>>>> currently left
    >     >>>>>>>>>> baked into the renderer, but in some new cases, it is
    >     >>>>>>>> composed.  An
    >     >>>>>>>>>> ItemRendererOwnerViewBead is added to the strand
    >     >>>>>> instead of
    >     >>>>>>>> added to
    >     >>>>>>>>> a
    >     >>>>>>>>>> class and contains the reference to the ownerView.
    >     >>>>>> Maybe
    >     >>>>>>>> someday
    >     >>>>>>>>> we'll
    >     >>>>>>>>>> fully remove the old pattern, not sure.
    >     >>>>>>>>>>
    >     >>>>>>>>>> Ideally we would do more "has" than "is".  It could
    >     >>>>>> allow us
    >     >>>>>>>> to
    >     >>>>>>>>> eliminate
    >     >>>>>>>>>> much of the required code to be a top tag in an MXML
    >     >>>>>> document.
    >     >>>>>>>>>>
    >     >>>>>>>>>> Other changes in this branch were to add "Initializers"
    >     >>>>>> so the
    >     >>>>>>>>>> RendererFactories didn't bake in code for specific item
    >     >>>>>>>> renderers,
    >     >>>>>>>>> and to
    >     >>>>>>>>>> create a few base classes with overrides so there is
    >     >>>>>> less
    >     >>>>>>>> code to
    >     >>>>>>>>> maintain.
    >     >>>>>>>>>>
    >     >>>>>>>>>> There should be little if any impact to application
    >     >>>>>> code.  It
    >     >>>>>>>> should
    >     >>>>>>>>>> mainly affect the internals of how item renderer-based
    >     >>>>>> things
    >     >>>>>>>> are
    >     >>>>>>>>> created.
    >     >>>>>>>>>>
    >     >>>>>>>>>> Thanks,
    >     >>>>>>>>>> -Alex
    >     >>>>>>>>>>
    >     >>>>>>>>>> On 2/17/20, 4:33 PM, "Carlos Rovira" <
    >     >>>>>> [email protected] <mailto:[email protected]>
    >     >>>>>>>>>
    >     >>>>>>>>> wrote:
    >     >>>>>>>>>>
    >     >>>>>>>>>> Hi Alex,
    >     >>>>>>>>>>
    >     >>>>>>>>>> if will be of help if you point us to different
    >     >>>>>> links
    >     >>>>>>>> where we
    >     >>>>>>>>> can
    >     >>>>>>>>>> learn
    >     >>>>>>>>>> about this modifications, since I at least can just
    >     >>>>>>>> imagine what
    >     >>>>>>>>> is all
    >     >>>>>>>>>> about, but will need to get deeper in the concepts
    >     >>>>>> to
    >     >>>>>>>> understand
    >     >>>>>>>>> the
    >     >>>>>>>>>> changes and to apply this patterns.
    >     >>>>>>>>>>
    >     >>>>>>>>>> In Jewel each "list component has its own type of
    >     >>>>>>>> renderer, so
    >     >>>>>>>>> for
    >     >>>>>>>>>> example
    >     >>>>>>>>>> List uses ListItemRenderer and DataGrid has
    >     >>>>>>>>> DataGridItemRenderer, since
    >     >>>>>>>>>> usually at that component level the user needs
    >     >>>>>> similar
    >     >>>>>>>>> infrastructure
    >     >>>>>>>>>> like
    >     >>>>>>>>>> hoverable, selectable...and some (not much) more,
    >     >>>>>> don't
    >     >>>>>>>> know
    >     >>>>>>>>> right now
    >     >>>>>>>>>> how
    >     >>>>>>>>>> all this will fit with the "has" new
    >     >>>>>> pattern....I'll try
    >     >>>>>>>> it.
    >     >>>>>>>>>>
    >     >>>>>>>>>> Just one important thing. There's actual users and
    >     >>>>>>>> clients using
    >     >>>>>>>>> Jewel
    >     >>>>>>>>>> and
    >     >>>>>>>>>> other UI sets and are with very short times for
    >     >>>>>> their
    >     >>>>>>>>> migrations, so
    >     >>>>>>>>>> just
    >     >>>>>>>>>> want to ask you to test as much as possible, since
    >     >>>>>> TDJ
    >     >>>>>>>> has many
    >     >>>>>>>>>> examples
    >     >>>>>>>>>> now. Other thing you can test is new TodoMVC to see
    >     >>>>>> how it
    >     >>>>>>>>> behaves,
    >     >>>>>>>>>> since
    >     >>>>>>>>>> it uses a List with IRs. So we can ensure (as much
    >     >>>>>> as we
    >     >>>>>>>> can)
    >     >>>>>>>>> the merge
    >     >>>>>>>>>> left things working (as much as we can)
    >     >>>>>>>>>>
    >     >>>>>>>>>> Thanks for working on this, will try all of this
    >     >>>>>> tomorrow
    >     >>>>>>>>>>
    >     >>>>>>>>>> Carlos
    >     >>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>> El lun., 17 feb. 2020 a las 22:35, Alex Harui
    >     >>>>>>>>>> (<[email protected] <mailto:[email protected]
    > >>)
    >     >>>>>>>>>> escribió:
    >     >>>>>>>>>>
    >     >>>>>>>>>>> I've pushed the "has" branch that contains a
    >     >>>>>>>> refactoring of
    >     >>>>>>>>> the item
    >     >>>>>>>>>>> renderers.  Tour De Jewel and MDL Example seem to
    >     >>>>>> be
    >     >>>>>>>> working
    >     >>>>>>>>> as is
    >     >>>>>>>>>> Basic
    >     >>>>>>>>>>> List Example and MX AdvancedDataGrid.
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> "has" is really just calls to getBeadByType.  If
    >     >>>>>> we
    >     >>>>>>>> start to
    >     >>>>>>>>> see
    >     >>>>>>>>>>> performance issues, then we'll look into
    >     >>>>>> optimizing.
    >     >>>>>>>> The
    >     >>>>>>>>> motivation
    >     >>>>>>>>>> to
    >     >>>>>>>>>>> switch to "has" came from several bugs about
    >     >>>>>> using MX
    >     >>>>>>>>> Label/CheckBox
    >     >>>>>>>>>> as
    >     >>>>>>>>>>> item renderers.  In Royale, the ItemRenderers
    >     >>>>>> were in
    >     >>>>>>>> control
    >     >>>>>>>>> of the
    >     >>>>>>>>>>> visuals of their rollover and selected state.
    >     >>>>>> That is
    >     >>>>>>>> a more
    >     >>>>>>>>> proper
    >     >>>>>>>>>>> encapsulation than the way it was in Flex where
    >     >>>>>> the
    >     >>>>>>>> lists drew
    >     >>>>>>>>> the
    >     >>>>>>>>>> rollover
    >     >>>>>>>>>>> and selected states and it was hard to override
    >     >>>>>> the
    >     >>>>>>>> visuals
    >     >>>>>>>>> for a
    >     >>>>>>>>>> custom
    >     >>>>>>>>>>> item renderer.  But in the develop branch Royale
    >     >>>>>> code,
    >     >>>>>>>> it would
    >     >>>>>>>>>> require
    >     >>>>>>>>>>> that custom itemrenderers implement a lot of APIs
    >     >>>>>>>> related to
    >     >>>>>>>>>> rollover and
    >     >>>>>>>>>>> selected visuals.  Instead we can now reuse/share
    >     >>>>>> code
    >     >>>>>>>> for
    >     >>>>>>>>> visuals
    >     >>>>>>>>>> between
    >     >>>>>>>>>>> different renderers because a renderer now can
    >     >>>>>> "has" a
    >     >>>>>>>>>> rollover/selection
    >     >>>>>>>>>>> implementation instead of being one.
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> There are more pieces involved, but there is more
    >     >>>>>>>> sharing of
    >     >>>>>>>>> code.
    >     >>>>>>>>>> Along
    >     >>>>>>>>>>> the way I found that there were some not-so-PAYG
    >     >>>>>>>> patterns
    >     >>>>>>>>> being used
    >     >>>>>>>>>> in MDL
    >     >>>>>>>>>>> and Jewel renderers that might deserve further
    >     >>>>>>>> modification.
    >     >>>>>>>>> There
    >     >>>>>>>>>> are
    >     >>>>>>>>>>> "hoverable" and "selectable" APIs that appear to
    >     >>>>>> be
    >     >>>>>>>> used to
    >     >>>>>>>>>> permanently
    >     >>>>>>>>>>> turn off selection and hover visuals.  In
    >     >>>>>> general, I
    >     >>>>>>>> think
    >     >>>>>>>>> there is
    >     >>>>>>>>>> better
    >     >>>>>>>>>>> use of PAYG and composition when functionality is
    >     >>>>>>>> "built up"
    >     >>>>>>>>> and not
    >     >>>>>>>>>>> "turned off", so with the "has" pattern the
    >     >>>>>> renderers
    >     >>>>>>>> can be
    >     >>>>>>>>> added
    >     >>>>>>>>>> to a
    >     >>>>>>>>>>> list without any selection visuals at all (for a
    >     >>>>>>>> non-selectable
    >     >>>>>>>>>> list) or
    >     >>>>>>>>>>> re-composed with custom visuals that only support
    >     >>>>>>>> hoverable,
    >     >>>>>>>>> for
    >     >>>>>>>>>> example.
    >     >>>>>>>>>>> I left it "hoverable/selectable" in the API
    >     >>>>>> surface for
    >     >>>>>>>> now,
    >     >>>>>>>>> but
    >     >>>>>>>>>> something
    >     >>>>>>>>>>> to think about going forward.
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> I’m going to run a few more tests before merging
    >     >>>>>> and
    >     >>>>>>>> pushing to
    >     >>>>>>>>>> develop.
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> -Alex
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> On 1/15/20, 10:44 PM, "Alex Harui"
    >     >>>>>>>> <[email protected] <mailto:[email protected]>>
    >     >>>>>>>>> wrote:
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> You are welcome to try and see how many cache
    >     >>>>>> hits
    >     >>>>>>>> it
    >     >>>>>>>>> gets.  I
    >     >>>>>>>>>> think
    >     >>>>>>>>>>> in renderers, we ask once per renderer.  I'm not
    >     >>>>>> sure
    >     >>>>>>>> there is
    >     >>>>>>>>> a
    >     >>>>>>>>>> faster way
    >     >>>>>>>>>>> to do the first lookup of "is", but for "has" we
    >     >>>>>> could
    >     >>>>>>>> change
    >     >>>>>>>>> the
    >     >>>>>>>>>> lookup
    >     >>>>>>>>>>> and save time.
    >     >>>>>>>>>>>
    >     >>>>>>>>>>> On 1/15/20, 10:38 PM, "Greg Dove" <
    >     >>>>>>>> [email protected] <mailto:[email protected]>>
    >     >>>>>>>>> wrote:
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>    For the  'something is ISomeInterface'
    >     >>>>>>>>>>>    I had wondered in the past if these types
    >     >>>>>> of
    >     >>>>>>>> lookups
    >     >>>>>>>>> could be
    >     >>>>>>>>>>> incrementally
    >     >>>>>>>>>>>    cached on the 'is' target (after first
    >     >>>>>> lookup),
    >     >>>>>>>> that
    >     >>>>>>>>> might
    >     >>>>>>>>>> make
    >     >>>>>>>>>>> sense for
    >     >>>>>>>>>>>    interfaces, which are the deepest checks I
    >     >>>>>>>> think?
    >     >>>>>>>>>>>    caching result (could optionally create
    >     >>>>>> the Map)
    >     >>>>>>>>>>>
    >     >>>>>>>> ISomeInterface['implMap'].set(something.constructor,
    >     >>>>>>>>>> isResult )
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>    then earlier in the interface checks, it
    >     >>>>>> could
    >     >>>>>>>> do
    >     >>>>>>>>> something
    >     >>>>>>>>>> like:
    >     >>>>>>>>>>>     if (ISomeInterface['implMap']  &&
    >     >>>>>>>>>>>
    >     >>>>>>>> ISomeInterface['implMap'].has(something.constructor) )
    >     >>>>>>>>> return
    >     >>>>>>>>>>>
    >     >>>>>>>> ISomeInterface['implMap'].get(something.constructor)
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>    I realize its extra code, but it should be
    >     >>>>>>>> quite a bit
    >     >>>>>>>>>> faster over
    >     >>>>>>>>>>> time I
    >     >>>>>>>>>>>    think.
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>    On Thu, Jan 16, 2020 at 7:20 PM Alex Harui
    >     >>>>>>>>>>> <[email protected] 
<mailto:[email protected]>>
    > wrote:
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>> Hi,
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> Several different threads have brought
    >     >>>>>> up
    >     >>>>>>>> issues with
    >     >>>>>>>>>> sharing
    >     >>>>>>>>>>> code between
    >     >>>>>>>>>>>> component sets.  Other threads have
    >     >>>>>> offered
    >     >>>>>>>>> different and
    >     >>>>>>>>>> clever
    >     >>>>>>>>>>> ways to
    >     >>>>>>>>>>>> do various things like how MXML is
    >     >>>>>> applied to
    >     >>>>>>>> a
    >     >>>>>>>>> component.
    >     >>>>>>>>>>> Meanwhile, over
    >     >>>>>>>>>>>> in MX emulation, I was starting to copy
    >     >>>>>> some
    >     >>>>>>>> code
    >     >>>>>>>>> from
    >     >>>>>>>>>> Basic to
    >     >>>>>>>>>>> MXRoyale to
    >     >>>>>>>>>>>> get the various MX components to be
    >     >>>>>> valid item
    >     >>>>>>>>> renderers.
    >     >>>>>>>>>>> MXRoyale is
    >     >>>>>>>>>>>> using Basic's item renderer architecture
    >     >>>>>>>> which is
    >     >>>>>>>>> better
    >     >>>>>>>>>>> encapsulated:  the
    >     >>>>>>>>>>>> renderer draws its hovered and selected
    >     >>>>>>>> state.  In
    >     >>>>>>>>> Flex,
    >     >>>>>>>>>> the
    >     >>>>>>>>>>> List draws
    >     >>>>>>>>>>>> over the renderer, which makes it hard
    >     >>>>>> to
    >     >>>>>>>> customize
    >     >>>>>>>>> the
    >     >>>>>>>>>> way the
    >     >>>>>>>>>>> renderer
    >     >>>>>>>>>>>> will look when hovered and selected.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> It finally occurred to me that one of
    >     >>>>>> the
    >     >>>>>>>> reasons we
    >     >>>>>>>>> end up
    >     >>>>>>>>>>> copying code
    >     >>>>>>>>>>>> is because we are still using too many
    >     >>>>>> "is"
    >     >>>>>>>> checks
    >     >>>>>>>>> instead
    >     >>>>>>>>>> of
    >     >>>>>>>>>>> "has"
    >     >>>>>>>>>>>> checks.  I'm not even sure we have any
    >     >>>>>> "has"
    >     >>>>>>>> checks
    >     >>>>>>>>> in the
    >     >>>>>>>>>> Royale
    >     >>>>>>>>>>>> framework.  I was afraid of the
    >     >>>>>> overhead of a
    >     >>>>>>>> "has"
    >     >>>>>>>>> check,
    >     >>>>>>>>>> but
    >     >>>>>>>>>>> I'm starting
    >     >>>>>>>>>>>> to change my mind because:
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> 1) The "is" check actually runs a fair
    >     >>>>>> amount
    >     >>>>>>>> of
    >     >>>>>>>>> code,
    >     >>>>>>>>>>> especially for
    >     >>>>>>>>>>>> (comp is ISomeInterface)
    >     >>>>>>>>>>>> 2) The length of bead arrays don't seem
    >     >>>>>> too
    >     >>>>>>>> long.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> A "has" check calls
    >     >>>>>>>> getBeadByType(ISomeInterface),
    >     >>>>>>>>> so it
    >     >>>>>>>>>>> actually will run
    >     >>>>>>>>>>>> the (bead is ISomeInterface) on
    >     >>>>>> potentially
    >     >>>>>>>> the
    >     >>>>>>>>> entire
    >     >>>>>>>>>> strand
    >     >>>>>>>>>>> array/vector,
    >     >>>>>>>>>>>> although we could speed that up by
    >     >>>>>> annotating
    >     >>>>>>>> beads
    >     >>>>>>>>> or
    >     >>>>>>>>>> keeping
    >     >>>>>>>>>>> track of
    >     >>>>>>>>>>>> what is on the strand.  But the code
    >     >>>>>>>> sharing/reuse
    >     >>>>>>>>>> potential of
    >     >>>>>>>>>>> this
    >     >>>>>>>>>>>> pattern seems significant to me.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> For example, it could change how hard
    >     >>>>>> it is
    >     >>>>>>>> to make a
    >     >>>>>>>>>> component
    >     >>>>>>>>>>> usable as
    >     >>>>>>>>>>>> a top tag in MXML.  Instead of the
    >     >>>>>> component
    >     >>>>>>>> having
    >     >>>>>>>>> to
    >     >>>>>>>>>> implement
    >     >>>>>>>>>>> certain
    >     >>>>>>>>>>>> methods, the component could have a bead
    >     >>>>>>>> installed
    >     >>>>>>>>> and the
    >     >>>>>>>>>>>> MXMLDataInterpreter could talk to that
    >     >>>>>> bead
    >     >>>>>>>> instead
    >     >>>>>>>>> of the
    >     >>>>>>>>>>> component.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> In the case of the item renderers,
    >     >>>>>> instead of
    >     >>>>>>>>> testing if
    >     >>>>>>>>>> the
    >     >>>>>>>>>>> renderer "is"
    >     >>>>>>>>>>>> ISelectableLIstItemRenderer, it could
    >     >>>>>> ask if
    >     >>>>>>>> the
    >     >>>>>>>>> created
    >     >>>>>>>>>> widget
    >     >>>>>>>>>>> "has" an
    >     >>>>>>>>>>>> ISelectableLIstItemRenderer bead and the
    >     >>>>>>>> logic in
    >     >>>>>>>>> that
    >     >>>>>>>>>> bead can
    >     >>>>>>>>>>> be reused
    >     >>>>>>>>>>>> in both Basic and MXRoyale without being
    >     >>>>>>>> copied.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> Some code, like Container overrides of
    >     >>>>>>>> addElement
    >     >>>>>>>>> probably
    >     >>>>>>>>>> can't
    >     >>>>>>>>>>> be
    >     >>>>>>>>>>>> refactored into a "has".  But I wonder
    >     >>>>>> how
    >     >>>>>>>> many other
    >     >>>>>>>>>> things
    >     >>>>>>>>>>> could.  I'm
    >     >>>>>>>>>>>> not sure I would move everything that
    >     >>>>>> could
    >     >>>>>>>> be moved
    >     >>>>>>>>> into a
    >     >>>>>>>>>>> shared bead.
    >     >>>>>>>>>>>> We'd have to think about the overhead
    >     >>>>>> on small
    >     >>>>>>>>> components
    >     >>>>>>>>>> and
    >     >>>>>>>>>>> apps.  But
    >     >>>>>>>>>>>> for MXML support and Item Renderer
    >     >>>>>> support,
    >     >>>>>>>> it seems
    >     >>>>>>>>> to
    >     >>>>>>>>>> make
    >     >>>>>>>>>>> sense.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> Anyway, I will look into refactoring
    >     >>>>>> the item
    >     >>>>>>>>> renderer
    >     >>>>>>>>>> code in
    >     >>>>>>>>>>> a  few days
    >     >>>>>>>>>>>> unless feedback indicates otherwise.
    >     >>>>>> Bugs
    >     >>>>>>>> like #676
    >     >>>>>>>>> and
    >     >>>>>>>>>> #681
    >     >>>>>>>>>>> inspired this
    >     >>>>>>>>>>>> post.
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>> Of course, I could be wrong...
    >     >>>>>>>>>>>> -Alex
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>>
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>
    >     >>>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>> --
    >     >>>>>>>>>> Carlos Rovira
    >     >>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>
    >     >>>>>>>>
    >     >>>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=z5Qw0OvSwtILm%2B3e%2Bw9aKu02Hu4uLzIb540OehTuiro%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=z5Qw0OvSwtILm%2B3e%2Bw9aKu02Hu4uLzIb540OehTuiro%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725599891&amp;sdata=z5Qw0OvSwtILm%2B3e%2Bw9aKu02Hu4uLzIb540OehTuiro%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=ud9Eva2B84DoW%2B8d0xjB5cBX29PFyW8qKNvxihEoBNM%3D&amp;reserved=0
    > >>>
    >     >>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>>
    >     >>>>>>>>>
    >     >>>>>>>>> --
    >     >>>>>>>>>
    >     >>>>>>>>> Piotr Zarzycki
    >     >>>>>>>>>
    >     >>>>>>>>> Patreon: *
    >     >>>>>>>>>
    >     >>>>>>>>
    >     >>>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725609846&amp;sdata=sor6yeinm63kwuhkq8y0xWnNSlhC6E80lmT8wk5QRMU%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
    > >>>
    >     >>>>>>>>> <
    >     >>>>>>>>>
    >     >>>>>>>>
    >     >>>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=Kp9gcZ0f6ITkdFQAvOD2vWVACpJkgSuuNEYrYX884io%3D&amp;reserved=0
    > >>>
    >     >>>>>>>>>> *
    >     >>>>>>>>>
    >     >>>>>>>>>
    >     >>>>>>>>>
    >     >>>>>>>>
    >     >>>>>>>> --
    >     >>>>>>>> Carlos Rovira
    >     >>>>>>>>
    >     >>>>>>>>
    >     >>>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725619797&amp;sdata=CoGkfcg2u0cnM34NilDnAhNPLc71sHZw1mDXva5JNcU%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > >>>
    >     >>>>>>>>
    >     >>>>>>>>
    >     >>>>>>>>
    >     >>>>>>>
    >     >>>>>>> --
    >     >>>>>>> Carlos Rovira
    >     >>>>>>>
    >     >>>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > >>>
    >     >>>>>>>
    >     >>>>>>>
    >     >>>>>>
    >     >>>>>> --
    >     >>>>>> Carlos Rovira
    >     >>>>>>
    >     >>>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725629751&amp;sdata=tQd7vkCt3B1QOiiu5XWXMzzUDSsKceMWDh1PegZKdgs%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > >>>
    >     >>>>>>
    >     >>>>>>
    >     >>>>>>
    >     >>>>>
    >     >>>>> --
    >     >>>>> Carlos Rovira
    >     >>>>>
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0>>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0>
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725639714&amp;sdata=9c1Ko4euWufPYt%2Bq0zhrzDezWY77%2FM92FO2LBDac6QE%3D&amp;reserved=0
    > <
    > 
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725649667&amp;sdata=z4NUk9PMRcAxzHa6RY%2FYvfFUXIgt9xVL3RZyV9oRFjY%3D&amp;reserved=0
    > >>>
    >     >
    >     >
    >     >
    >
    >
    >
    >
    >
    
    -- 
    Carlos Rovira
    
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cb3e2d89dd1f54315e55708d7c48535c8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637193948725649667&amp;sdata=z4NUk9PMRcAxzHa6RY%2FYvfFUXIgt9xVL3RZyV9oRFjY%3D&amp;reserved=0
    

Reply via email to