I do agree that this is pretty low on the list of priorities. I did not have a 
head to work on anything “serious” and the class lists was a nice distraction 
for me. I’m certainly fine with however Piotr handles this. I would like to 
point out a few things:

1. Object instantiation is pretty cheap in JS. A CSSClassList object is no 
heavier than an empty String. 8 empty strings use more memory than a single 
CSSClassList.
2. Array.join() is about the same computational-wise as string concatenation.
3. The “list” is not being added anywhere the empty strings would not be added, 
so it’s no less PAYG than strings.
4. An instantiated class such as this would fit better in case we need to play 
with class lists in beads because the CSSClassList object could be passed 
around and modified by different classes without exposing private variables 
and/or strands and beads needing to know about each other. I don’t think static 
utility classes are any less PAYG in this case.

Thanks,
Harbs

> On Mar 2, 2018, at 7:42 AM, Piotr Zarzycki <piotrzarzyck...@gmail.com> wrote:
> 
> Hi Harbs,
> 
> As much as I like Array approach I took Alex's words more serious that
> having an Array in the game here could be more heavier than String
> concatenation. It's earlier in the discussion.
> 
> Piotr
> 
> 
> 2018-03-02 3:26 GMT+01:00 Alex Harui <aha...@adobe.com.invalid>:
> 
>> Very nice, but IMO, this is over-engineering.  We are talking about a
>> space-delimited list where some portion of it is considered "fixed"
>> another portion is user-settable and another portion comes from other
>> attributes.  Some generic StringUtils or ListUtils might be more PAYG,
>> especially if they are opt-in and just used to manage the user-settable
>> portion.  Think of it this way:  Every MDL app needs to carry around
>> ClassList even if they never change the classname.  I don't care too much
>> since it is in MDL and not in the core, so keep it if you want to, but I
>> can think of lots of other tasks we should be working on than creating
>> cool classes to manage a list of strings.
>> 
>> My 2 cents,
>> -Alex
>> 
>> On 3/1/18, 3:51 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>> 
>>> What do you think of the CSSClassList class I just committed?
>>> 
>>> I *think* that makes the pattern more recognizable and probably is less
>>> heavy if more than one class can be used.
>>> 
>>> Harbs
>>> 
>>>> On Mar 1, 2018, at 11:56 PM, Piotr Zarzycki <piotrzarzyck...@gmail.com>
>>>> wrote:
>>>> 
>>>> Harbs, Alex,
>>>> 
>>>> I just pushed implementation of computeFinalClassNames to
>>>> branch feature/type_names_class_name_issue124. You can review
>>>> implementation in this commit [1] and example of usage in Card and
>>>> Button.
>>>> 
>>>> I have tested with Harbs example [3] and with Card by changing orders.
>>>> It's
>>>> working.
>>>> 
>>>> [1]
>>>> https://na01.safelinks.protection.outlook.com/?url=
>> http%3A%2F%2Fbit.ly%2F
>>>> 2HTHaFQ&data=02%7C01%7Caharui%40adobe.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6
>>>> c56%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%
>> 7C636555451956879397&sdata
>>>> =5EDairk%2BdGWuPE20vIR8jGFcRSflwqQIcw48oCPydYU%3D&reserved=0
>>>> [2]
>>>> https://na01.safelinks.protection.outlook.com/?url=
>> http%3A%2F%2Fbit.ly%2F
>>>> 2oJgKOf&data=02%7C01%7Caharui%40adobe.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6
>>>> c56%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%
>> 7C636555451956879397&sdata
>>>> =8hIfKGYzhaInYfubnf3lUKbYZWRUANzEcWHj3Pkn3Ho%3D&reserved=0
>>>> [3]
>>>> https://na01.safelinks.protection.outlook.com/?url=
>> http%3A%2F%2Fbit.ly%2F
>>>> 2F734nx&data=02%7C01%7Caharui%40adobe.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6
>>>> c56%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%
>> 7C636555451956879397&sdata
>>>> =9I9q1KjL5VNE5CJSAVTtwN9hhR2rco4ovIzJjQ74%2FeY%3D&reserved=0
>>>> 
>>>> Waiting for your review.
>>>> 
>>>> Thanks,
>>>> Piotr
>>>> 
>>>> 
>>>> 2018-02-28 23:31 GMT+01:00 Piotr Zarzycki <piotrzarzyck...@gmail.com>:
>>>> 
>>>>> Let me play with implementation of that function. It seems to me that
>>>>> will
>>>>> be much cleaner than current solution.
>>>>> 
>>>>> If user actually wanted to do anythin with className - let the
>>>>> overriding
>>>>> speaks.
>>>>> 
>>>>> 
>>>>> 
>>>>> On Wed, Feb 28, 2018, 21:51 Alex Harui <aha...@adobe.com.invalid>
>>>>> wrote:
>>>>> 
>>>>>> On 2/28/18, 12:27 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>>> 
>>>>>>> OK. I think that will work for DML components, but what if there’s a
>>>>>>> bead
>>>>>>> which needs to add class names? What would be the “right” way to do
>>>>>>> that?
>>>>>>> A bead cannot override the function on the strand.
>>>>>> 
>>>>>> Do we have beads that manipulate className?
>>>>>> 
>>>>>> IMO, the principle behind how to handle that is knowing whether you
>>>>>> are
>>>>>> sharing something or not.  There may not be one right way to handle
>>>>>> it,
>>>>>> but if I had to handle it, I would have the bead set something in the
>>>>>> model or presentation model of the component.  And the component would
>>>>>> override computeFinalClassNames to take that into account.
>>>>>> 
>>>>>> 
>>>>>> Although having just written that, maybe this computeFinalClassNames
>>>>>> should be in the view instead of on the base class so it is
>>>>>> replaceable
>>>>>> instead of overridable.
>>>>>> 
>>>>>> Thoughts?
>>>>>> -Alex
>>>>>>> 
>>>>>>>> On Feb 28, 2018, at 10:17 PM, Alex Harui <aha...@adobe.com.INVALID>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> I think you are missing that the element.className is set to
>>>>>>>> computeFinalClassNames.  So the user is welcome to manipulate the
>>>>>>>> UIBase.className however they see fit.  They can assign it a whole
>>>>>>>> new
>>>>>>>> space-delimited list if they want.  But what gets set on
>>>>>>>> element.className
>>>>>>>> is computed from typeNames and className by default, and MDL would
>>>>>>>> override it to factor in fab, raised, colored into the computing of
>>>>>>>> the
>>>>>>>> final classnames.
>>>>>>>> 
>>>>>>>> I would prefer that we don't make requirements on users as to what
>>>>>>>> they
>>>>>>>> can or can't do with the className property, like requiring them to
>>>>>>>> use
>>>>>>>> addClassName/removeClassNames.  MXML and States might set className,
>>>>>> as
>>>>>>>> could any other AS logic.  I think folks may even be used to setting
>>>>>>>> className in JavaScript.  So letting UIBase.className be the
>>>>>>>> "variable"
>>>>>>>> part and having computeFinalClassNames be the way the "fixed" part
>>>>>>>> is
>>>>>>>> handled makes sense to me.
>>>>>>>> 
>>>>>>>> Of course, I could be wrong...
>>>>>>>> -Alex
>>>>>>>> 
>>>>>>>> On 2/28/18, 12:03 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>>>>> 
>>>>>>>>> The problem which sparked this whole issue is like this:
>>>>>>>>> 
>>>>>>>>> 1. We have some components (i.e. in MDL) which add “pieces” to the
>>>>>>>>> class
>>>>>>>>> names (such as “fab”, “raised”, “colored”, etc.
>>>>>>>>> 2. The client might subsequently set the className to something
>>>>>>>>> else.
>>>>>>>>> 3. When the component sets the “pieces” first and the client sets
>>>>>>>>> the
>>>>>>>>> className later, the client will overwrite these “pieces” which
>>>>>>>>> were
>>>>>>>>> added by the component.
>>>>>>>>> 
>>>>>>>>> My suggestion to have addClassName() and removeClassName() was to
>>>>>>>>> have
>>>>>>>>> a
>>>>>>>>> “safe” way to add class names which would get computed together
>>>>>>>>> with
>>>>>>>>> the
>>>>>>>>> className when the className is replaced.
>>>>>>>>> 
>>>>>>>>> The way you have it seems to just be modifying the existing
>>>>>>>>> className
>>>>>>>>> property. If that’s overwritten by a client, the logic falls apart.
>>>>>>>>> 
>>>>>>>>> It feels like only having typeNames which are set inside the
>>>>>>>>> component
>>>>>>>>> and className which is set outside the component is not really
>>>>>>>>> enough.
>>>>>>>>> (Unless I’m missing something.)
>>>>>>>>> 
>>>>>>>>> Harbs
>>>>>>>>> 
>>>>>>>>>> On Feb 28, 2018, at 9:31 PM, Alex Harui <aha...@adobe.com.INVALID
>>> 
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> On 2/28/18, 10:44 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>>>>>>> 
>>>>>>>>>>> If it’s not public, I don’t see how a utility method could call
>>>>>>>>>>> it
>>>>>>>>>>> though.
>>>>>>>>>> 
>>>>>>>>>> I didn't think the utility methods like
>>>>>>>>>> addClassName/removeClassName
>>>>>>>>>> would
>>>>>>>>>> need to alter computeFinalClassNames().
>>>>>>>>>> 
>>>>>>>>>> AIUI, for most UIBase subclasses, the final element.className is a
>>>>>> mix
>>>>>>>>>> of
>>>>>>>>>> the className property and the typeNames.  The typenames are
>>>>>>>>>> thought
>>>>>>>>>> to
>>>>>>>>>> be
>>>>>>>>>> "fixed" and the space-delimited list of names in className are the
>>>>>>>>>> ones
>>>>>>>>>> the user wants to manipulate in their code.  So, I would expect
>>>>>>>>>> them
>>>>>>>>>> to
>>>>>>>>>> write:
>>>>>>>>>> 
>>>>>>>>>> org.apache.royale.utils.addClassName(myComponent, "pinkStyles");
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> addClassName should just do something like:
>>>>>>>>>> 
>>>>>>>>>> myComponent.className += value;
>>>>>>>>>> 
>>>>>>>>>> That will call the className setter that will run:
>>>>>>>>>> 
>>>>>>>>>> element.className = computeFinalClassNames();
>>>>>>>>>> 
>>>>>>>>>> If you call
>>>>>>>>>> 
>>>>>>>>>> org.apache.royale.utils.removeClassName(myComponent,
>>>>>>>>>> "pinkStyles");
>>>>>>>>>> 
>>>>>>>>>> removeClassName should just do something like:
>>>>>>>>>> 
>>>>>>>>>> Var s:String = myComponent.className;
>>>>>>>>>> Var c:int = s.indexOf(nameToRemove + " ");
>>>>>>>>>> If (c != -1)
>>>>>>>>>>  s = s.substr(0, c) + s.substr(c + nameToRemove.length + 1);
>>>>>>>>>> Else
>>>>>>>>>> {
>>>>>>>>>>  c= s.indexOf(" " + nameToRemove);
>>>>>>>>>>  if (c != -1)
>>>>>>>>>>    s = s.substr(0, c);  // remove last item
>>>>>>>>>> }
>>>>>>>>>> myComponent.className = s;
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> It seems like it should be that simple.  What am I missing?
>>>>>>>>>> 
>>>>>>>>>> -Alex
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>> On Feb 28, 2018, at 8:21 PM, Alex Harui
>>>>>>>>>>>> <aha...@adobe.com.INVALID>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On 2/28/18, 9:50 AM, "Piotr Zarzycki" <
>> piotrzarzyck...@gmail.com
>>>>>>>>>>>> <mailto:piotrzarzyck...@gmail.com>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Ok Understand, but do you agree that  computeFinalClassNames -
>>>>>>>>>>>>> is
>>>>>>>>>>>>> something
>>>>>>>>>>>>> which is in the UIBase ?
>>>>>>>>>>>> 
>>>>>>>>>>>> Yes, and probably protected instead of public.  The one in
>>>>>>>>>>>> UIBase
>>>>>>>>>>>> just
>>>>>>>>>>>> appends typenames to className.  It gets overridden in MDL where
>>>>>>>>>>>> needed
>>>>>>>>>>>> for shadow and other attributes.
>>>>>>>>>>>> 
>>>>>>>>>>>> My 2 cents,
>>>>>>>>>>>> -Alex
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 2018-02-28 18:47 GMT+01:00 Alex Harui
>>>>>>>>>>>>> <aha...@adobe.com.invalid>:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I think that in the shadow setter, it would change _shadow and
>>>>>>>>>>>>>> call
>>>>>>>>>>>>>> setClassName(computeFinalClassNames());
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On 2/28/18, 9:33 AM, "Piotr Zarzycki"
>>>>>>>>>>>>>> <piotrzarzyck...@gmail.com
>>>>>>> 
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Alex,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> So we are getting back to the idea where you proposed to have
>>>>>>>>>>>>>>> function
>>>>>>>>>>>>>>> which computes everything.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> override public function computeFinalClassNames():String
>>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>> return super.computeFinalClassNames() + " " + _shadow;
>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Where does that function should be placed ? Does that
>>>>>>>>>>>>>>> function
>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>> called in addedToParent plus whenever someone change _shadow
>>>>>>>>>>>>>>> ? -
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Because I really don't know how to handle scenario where you
>>>>>> have
>>>>>>>>>>>>>>> some
>>>>>>>>>>>>>>> property isActive = true/false and I need to add/remove
>>>>>>>>>>>>>>> class. -
>>>>>>>>>>>>>>> In
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> first launch I use  computeFinalClassNames, but how to handle
>>>>>>>>>>>>>>> changing
>>>>>>>>>>>>>> ?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thanks, Piotr
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 2018-02-28 18:26 GMT+01:00 Alex Harui
>>>>>>>>>>>>>>> <aha...@adobe.com.invalid
>>>>>>> :
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi Piotr,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I think am I not communicating the principles effectively.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> First, IMO, addClassName and removeClassName should not be
>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>> UIBase.
>>>>>>>>>>>>>>>> Lots of apps can be written without needing these methods.
>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>> think
>>>>>>>>>>>>>> they
>>>>>>>>>>>>>>>> can be written as utility functions.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Second, the computation of the final element.className
>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>> represent
>>>>>>>>>>>>>>>> the state of the component, so I don't get why you need an
>>>>>>>>>>>>>>>> _internalClassName or should ever set it to "".  The
>>>>>> computation
>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>> component with a shadow would be to check the shadow
>>>>>>>>>>>>>>>> property
>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>> if
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>> true, add a className for the shadow to the list.  Then I
>>>>>>>>>>>>>>>> think
>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>> wouldn't have the problem you showed in the animated GIF.
>>>>>>>>>>>>>>>> When
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> classname property is set from the outside by
>>>>>>>>>>>>>>>> MXMLDataInterpreter
>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>> even
>>>>>>>>>>>>>>>> user-written code, those classNames are added to the list
>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> typeNames and the shadow className if shadow is true and
>>>>>>>>>>>>>>>> then
>>>>>>>>>>>>>>>> set
>>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> element.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Finally, for addClassName and removeClassName, and all other
>>>>>>>>>>>>>>>> Royale
>>>>>>>>>>>>>>>> code,
>>>>>>>>>>>>>>>> we don't want to do much if any parameter checking.  That is
>>>>>>>>>>>>>>>> also
>>>>>>>>>>>>>>>> just-in-case code.  The production code should not be
>>>>>>>>>>>>>>>> passing
>>>>>> in
>>>>>>>>>>>>>> null or
>>>>>>>>>>>>>>>> other bad values.  And once you fix that, then the checks
>>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>> written do not add value.  I have proposed that there are
>>>>>>>>>>>>>>>> debug-only
>>>>>>>>>>>>>>>> code
>>>>>>>>>>>>>>>> that does parameter checking.  There is a goog.DEBUG flag
>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>> can
>>>>>>>>>>>>>>>> use
>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>> that.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> HTH,
>>>>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 2/28/18, 12:40 AM, "Piotr Zarzycki"
>>>>>>>>>>>>>>>> <piotrzarzyck...@gmail.com>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Hi Alex,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Sorry about that. Let me show you code and I recorded GIF
>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>> problem
>>>>>>>>>>>>>>>>> debugging.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> *Code in UIBase which I have implemented:*
>>>>>>>>>>>>>>>>> addClassName and removeClassName [1].
>>>>>>>>>>>>>>>>> addedToParent what is happen with internal field which I
>>>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>>> added
>>>>>>>>>>>>>> [2]
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> *Code for Testing* [3] - I'm adding first className, than
>>>>>>>>>>>>>>>>> shadow.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> *GIF* [4] We are starting from the constructor. Pay
>>>>>>>>>>>>>>>>> attention
>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> moment
>>>>>>>>>>>>>>>>> where className is being wiped out, later I have to use my
>>>>>>>>>>>>>>>>> internal
>>>>>>>>>>>>>>>>> variable to get it back.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Does that more clean now ?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>> https%3A%2F%2Fpaste.apa
>>>>>>>>>>>>>>>>> che.org%2FEumG&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4ddb578008d
>>>>>>>>>>>>>>>>> 57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>>>>>>>>> 7C636554040718214998&
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> sdata=cDT88OF63TdBMPxYY2vwMSIRxD%2FP3DvwHupj%2BQHsofw%3D&
>>>>>> reserve
>>>>>>>>>>>>>>>>> d=
>>>>>>>>>>>>>>>>> 0
>>>>>>>>>>>>>>>>> [2]
>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>> https%3A%2F%2Fpaste.apa
>>>>>>>>>>>>>>>>> che.org%2FArmU&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4ddb578008d
>>>>>>>>>>>>>>>>> 57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>>>>>>>>> 7C636554040718214998&
>>>>>>>>>>>>>>>>> sdata=m6whImrP70u7kzRxCbErlxCHWef8TK
>>>>>> Nejwm4Sr7bw7g%3D&reserved=0
>>>>>>>>>>>>>>>>> [3]
>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>> https%3A%2F%2Fpaste.apa
>>>>>>>>>>>>>>>>> che.org%2FKrxq&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4ddb578008d
>>>>>>>>>>>>>>>>> 57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>>>>>>>>> 7C636554040718214998&
>>>>>>>>>>>>>>>>> sdata=tpeUYSQIXGXtES8hyr7zSeet528ZTc
>>>>>> zSltcNccqRGDo%3D&reserved=0
>>>>>>>>>>>>>>>>> [4]
>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>> https%3A%2F%2F1drv.ms%2
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Fu%2Fs!ApVpLyjpHDC2hPtoCi65kIZZPwjSpQ
>>>>>> &data=02%7C01%7Caharui%40ad
>>>>>>>>>>>>>>>>> ob
>>>>>>>>>>>>>>>>> e
>>>>>>>>>>>>>> .com
>>>>>>>>>>>>>>>> %7C
>>>>>>>>>>>>>>>>> ee5c84b4e3ff4ddb578008d57e87046f%
>>>>>> 7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>> cee1%7C0%7C
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 0%7C636554040718214998&sdata=eX%2FgZ0MA%
>>>>>> 2BdQJjcpYtMkk1pw3r0iVkdR
>>>>>>>>>>>>>>>>> a%
>>>>>>>>>>>>>>>> 2F6TWRTG
>>>>>>>>>>>>>>>>> 10OY%3D&reserved=0
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>> Piotr
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 2018-02-27 23:31 GMT+01:00 Alex Harui
>>>>>>>>>>>>>>>>> <aha...@adobe.com.invalid>:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Hi Piotr,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> I could not understand this explanation. Might be better
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> show
>>>>>>>>>>>>>>>> actual
>>>>>>>>>>>>>>>>>> code.  For example in #3, there is a cssClass variable
>>>>>>>>>>>>>>>>>> that I
>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>>>> know
>>>>>>>>>>>>>>>>>> about.  Also you mention at the bottom setting something
>>>>>>>>>>>>>>>>>> as
>>>>>>>>>>>>>>>>>> empty,
>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>> I'm
>>>>>>>>>>>>>>>>>> not sure what that is.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> However, IMO, this code should be in utility functions,
>>>>>>>>>>>>>>>>>> not
>>>>>> in
>>>>>>>>>>>>>>>> UIBase.
>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>> think plenty of useful applications can be built without
>>>>>>>>>>>>>>>>>> changing
>>>>>>>>>>>>>>>>>> classNames at runtime.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> I'm off-line for the next several hours so we can pick
>>>>>>>>>>>>>>>>>> this
>>>>>> up
>>>>>>>>>>>>>> again
>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>> your morning.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Thanks for working on it,
>>>>>>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On 2/27/18, 2:21 PM, "Piotr Zarzycki"
>>>>>>>>>>>>>>>>>> <piotrzarzyck...@gmail.com>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Here is how I'm thinking to resolve that issue. I would
>>>>>>>>>>>>>>>>>>> take
>>>>>>>>>>>>>> Harb's
>>>>>>>>>>>>>>>>>>> proposition and add to UIBase  addClassName() and
>>>>>>>>>>>>>> removeClassName().
>>>>>>>>>>>>>>>>>> Next
>>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>> would add internal field _internalClassName:String.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> addClassName(value):
>>>>>>>>>>>>>>>>>>> 1) Will check if provided class name exits in _className
>>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>> _internalClassName.
>>>>>>>>>>>>>>>>>>> 2) Will add to _internalClassName += value
>>>>>>>>>>>>>>>>>>> 3) Assign to the element.className in the following way:
>>>>>>>>>>>>>>>>>> element.className
>>>>>>>>>>>>>>>>>>> = cssClass + " " + _className + " " + typeNames;
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> removeClassName(value)
>>>>>>>>>>>>>>>>>>> 1) Will check if provided classs name exists in
>>>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>> _internalClassName
>>>>>>>>>>>>>>>>>>> 2) Make a replace to empty string if css class name
>>>>>>>>>>>>>>>>>>> exists.
>>>>>>>>>>>>>>>>>>> _className.replace(value, "");
>>>>>>>>>>>>>>>>>>> 3) Assign to the element.className: element.className =
>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>> + "
>>>>>>>>>>>>>>>>>> " +
>>>>>>>>>>>>>>>>>>> typeNames;
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> In added to parent we are computing _internalClassName
>>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>> typeNames. Then it's being set as empty.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> element.className =  _internalClassName  + " " +
>>>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>> + "
>>>>>>>>>>>>>> " +
>>>>>>>>>>>>>>>>>>> typeNames;
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> I have implemented it and it seems to be working. Waiting
>>>>>> for
>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>>>>>> thoughts
>>>>>>>>>>>>>>>>>>> on that solution. The last step where we are adding all
>>>>>> three
>>>>>>>>>>>>>>>> fields is
>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> most important. Points 3 in addClassName and
>>>>>>>>>>>>>>>>>>> removeClassName
>>>>>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>>>>>> necessary,
>>>>>>>>>>>>>>>>>>> because user may want to more dynamically manipulate
>>>>>>>>>>>>>>>>>>> classes
>>>>>>>>>>>>>>>>>>> once
>>>>>>>>>>>>>>>>>>> component
>>>>>>>>>>>>>>>>>>> is created. Ex. "is-active" class is removed and added on
>>>>>>>>>>>>>>>>>>> demand.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Thanks, Piotr
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 2018-02-27 13:38 GMT+01:00 Piotr Zarzycki
>>>>>>>>>>>>>>>> <piotrzarzyck...@gmail.com>:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> I think I have analyzed everything and have some
>>>>>>>>>>>>>>>>>>>> implementation
>>>>>>>>>>>>>>>>>>>> proposition. I will try to provide it later today.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Thanks, Piotr
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 2018-02-27 13:35 GMT+01:00 Harbs
>>>>>>>>>>>>>>>>>>>> <harbs.li...@gmail.com>:
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> ExpandableSearch broke too.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> On Feb 25, 2018, at 6:15 PM, Piotr Zarzycki
>>>>>>>>>>>>>>>>>>>>> <piotrzarzyck...@gmail.com>
>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Harbs,
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> If you are using something more than MDL Dialog in
>>>>>>>>>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>>>>> application
>>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>>> would be great to get feedback whether I didn't break
>>>>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>>>>> anything.
>>>>>>>>>>>>>>>>>>>>> :)
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.pat
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%
>> 40adobe.co
>>>>>>>>>>>>>>>>>>>> m
>>>>>>>>>>>>>>>>>> %7C45a065853ba1
>>>>>>>>>>>>>>>>>>>> 4a295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536
>>>>>>>>>>>>>>>>>>>> 69427477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&rese
>>>>>>>>>>>>>>>>>>>> rved=0
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.pat
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%
>> 40adobe.co
>>>>>>>>>>>>>>>>>>>> m
>>>>>>>>>>>>>>>>>> %7C45a065853ba1
>>>>>>>>>>>>>>>>>>>> 4a295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536
>>>>>>>>>>>>>>>>>>>> 69427477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&rese
>>>>>>>>>>>>>>>>>>>> rved=0>*
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>> %
>>>>>>>>>>>>>>>>>> 7C45a065853ba14a
>>>>>>>>>>>>>>>>>>> 295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536694
>>>>>>>>>>>>>>>>>>> 27477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&reserved
>>>>>>>>>>>>>>>>>>> =0
>>>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>> %
>>>>>>>>>>>>>>>>>> 7C45a065853ba14a
>>>>>>>>>>>>>>>>>>> 295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536694
>>>>>>>>>>>>>>>>>>> 27477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&reserved
>>>>>>>>>>>>>>>>>>> =0>*
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4d
>>>>>>>>>>>>>>>>> db578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365540407
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 18214998&sdata=VYtgB8rsurZAHpO%2FVs%
>>>>>> 2FqOkmxROz58p7VvQ%2B0EK8VPPc
>>>>>>>>>>>>>>>>> %
>>>>>>>>>>>>>>>> 3D&reserv
>>>>>>>>>>>>>>>>> ed=0
>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4d
>>>>>>>>>>>>>>>>> db578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365540407
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 18214998&sdata=VYtgB8rsurZAHpO%2FVs%
>>>>>> 2FqOkmxROz58p7VvQ%2B0EK8VPPc
>>>>>>>>>>>>>>>>> %
>>>>>>>>>>>>>>>> 3D&reserv
>>>>>>>>>>>>>>>>> ed=0>*
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>> 7Cda0fd75922c94d
>>>>>>>>>>>>>>> cb789208d57ed16c9f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365543602
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0
>>>>>> oJqA6J42ZuhcA%3D&rese
>>>>>>>>>>>>>>> rv
>>>>>>>>>>>>>>> ed
>>>>>>>>>>>>>>> =0
>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>> 7Cda0fd75922c94d
>>>>>>>>>>>>>>> cb789208d57ed16c9f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365543602
>>>>>>>>>>>>>>> 95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0
>>>>>>>>>>>>>> oJqA6J42ZuhcA%3D&reserved=0>*
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> --
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>> w.
>>>>>>>>>>>>> pa
>>>>>>>>>>>>> tr
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>> w.
>>>>>>>>>>>>> pa
>>>>>>>>>>>>> tr>
>>>>>>>>>>>>> eon.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=http%3A%2F%2Feon
>>>>>>>>>>>>> .c
>>>>>>>>>>>>> om
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> %2F&data=02%7C01%7Caharui%40adobe.com%
>>>>>> 7C75519f53f52b4fde36b108d57edb
>>>>>>>>>>>>> 59
>>>>>>>>>>>>> 03
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> %7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>> 7C636554402926763835&sda
>>>>>>>>>>>>> ta
>>>>>>>>>>>>> =G
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> P3kiCe4imGL1d5mLcQcEGLxLCNgLGK2RheJkPCJgQY%3D&reserved=0>%
>>>>>> 2Fpiotrzar
>>>>>>>>>>>>> zy
>>>>>>>>>>>>> ck
>>>>>>>>>>>>> i&data=02%7C01%7Caharui%40adobe.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=http%3A%2F%2F40a
>>>>>>>>>>>>> do
>>>>>>>>>>>>> be
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> .com%2F&data=02%7C01%7Caharui%40adobe.com%
>>>>>> 7C75519f53f52b4fde36b108d5
>>>>>>>>>>>>> 7e
>>>>>>>>>>>>> db
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 5903%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>> 7C636554402926763835
>>>>>>>>>>>>> &s
>>>>>>>>>>>>> da
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> ta=r5UrAyOXUfffdyTWxankNj%2F5knjssVb9oxg4tY5sThY%3D&
>>>>>> reserved=0>%7Cf2
>>>>>>>>>>>>> 5d
>>>>>>>>>>>>> bf
>>>>>>>>>>>>> 20138f47
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 186d4808d57ed4a8fb%7Cfa7b1b5a7b34438794aed2c178de
>>>>>> cee1%7C0%7C0%7C6365
>>>>>>>>>>>>> 54
>>>>>>>>>>>>> 37
>>>>>>>>>>>>> 41
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 87322476&sdata=bVfz%2BNfVCmLjO4LzijRozHXQoN1VfVRQS
>>>>>> etW7oghI4s%3D&rese
>>>>>>>>>>>>> rv
>>>>>>>>>>>>> ed
>>>>>>>>>>>>> =0
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>> w.
>>>>>>>>>>>>> pa
>>>>>>>>>>>>> tr
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>> w.
>>>>>>>>>>>>> pa
>>>>>>>>>>>>> tr>
>>>>>>>>>>>>> eon.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=http%3A%2F%2Feon
>>>>>>>>>>>>> .c
>>>>>>>>>>>>> om
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> %2F&data=02%7C01%7Caharui%40adobe.com%
>>>>>> 7C75519f53f52b4fde36b108d57edb
>>>>>>>>>>>>> 59
>>>>>>>>>>>>> 03
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> %7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>> 7C636554402926763835&sda
>>>>>>>>>>>>> ta
>>>>>>>>>>>>> =G
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> P3kiCe4imGL1d5mLcQcEGLxLCNgLGK2RheJkPCJgQY%3D&reserved=0>%
>>>>>> 2Fpiotrzar
>>>>>>>>>>>>> zy
>>>>>>>>>>>>> ck
>>>>>>>>>>>>> i&data=02%7C01%7Caharui%40adobe.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.
>> com/?url=https%3A%2F%
>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>> 7C01%7Caharui%40adob
>>>>>>>>>>>>> e.com%7C9ba2ae2d1a6e4fdc774508d57fcf
>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>> com/?url=http%3A%2F%2F40a
>>>>>>>>>>>>> do
>>>>>>>>>>>>> be
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> .com%2F&data=02%7C01%7Caharui%40adobe.com%
>>>>>> 7C75519f53f52b4fde36b108d5
>>>>>>>>>>>>> 7e
>>>>>>>>>>>>> db
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 5903%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>> 7C636554402926763835
>>>>>>>>>>>>> &s
>>>>>>>>>>>>> da
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> ta=r5UrAyOXUfffdyTWxankNj%2F5knjssVb9oxg4tY5sThY%3D&
>>>>>> reserved=0>%7Cf2
>>>>>>>>>>>>> 5d
>>>>>>>>>>>>> bf
>>>>>>>>>>>>> 20138f47
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 186d4808d57ed4a8fb%7Cfa7b1b5a7b34438794aed2c178de
>>>>>> cee1%7C0%7C0%7C6365
>>>>>>>>>>>>> 54
>>>>>>>>>>>>> 37
>>>>>>>>>>>>> 41
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 87322476&sdata=bVfz%2BNfVCmLjO4LzijRozHXQoN1VfVRQS
>>>>>> etW7oghI4s%3D&rese
>>>>>>>>>>>>> rv
>>>>>>>>>>>>> ed
>>>>>>>>>>>>> =0
>>>>>>>>>>>>>> *
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>>> --
>>>> 
>>>> Piotr Zarzycki
>>>> 
>>>> Patreon:
>>>> *https://na01.safelinks.protection.outlook.com/?url=
>> https%3A%2F%2Fwww.pat
>>>> reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>> %7C9ba2ae2d1a6e
>>>> 4fdc774508d57fcf6c56%7Cfa7b1b5a7b34438794aed2c178de
>> cee1%7C0%7C0%7C6365554
>>>> 51956879397&sdata=GQq8YFsWjlmTvhQ3JIbegCvt1P1brQ
>> oyfshLnt8lxqg%3D&reserved
>>>> =0
>>>> 
>>>> <https://na01.safelinks.protection.outlook.com/?url=
>> https%3A%2F%2Fwww.pat
>>>> reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>> %7C9ba2ae2d1a6e
>>>> 4fdc774508d57fcf6c56%7Cfa7b1b5a7b34438794aed2c178de
>> cee1%7C0%7C0%7C6365554
>>>> 51956879397&sdata=GQq8YFsWjlmTvhQ3JIbegCvt1P1brQ
>> oyfshLnt8lxqg%3D&reserved
>>>> =0>*
>>> 
>> 
>> 
> 
> 
> -- 
> 
> Piotr Zarzycki
> 
> Patreon: *https://www.patreon.com/piotrzarzycki
> <https://www.patreon.com/piotrzarzycki>*


Reply via email to